매개변수가 PHP PDO 문에서 테이블 또는 열 이름을 대체할 수 있나요?
테이블 이름을 준비된 PDO 문에 매개변수로 전달하는 것은 불가능합니다. 이를 시도하는 다음 코드를 고려하십시오.
$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1'); if ($stmt->execute(array(':table' => 'users'))) { var_dump($stmt->fetchAll()); }
이 접근 방식은 테이블 및 열 이름을 매개 변수로 바꿀 수 없으므로 오류가 발생합니다.
안전한 삽입 SQL 쿼리에 테이블 이름
SQL 쿼리에 테이블 이름을 안전하게 삽입하려면 대체 접근 방식이 필요합니다. 다음과 같은 사용자 입력을 쿼리에 직접 입력하지 마세요.
$sql = "SELECT * FROM $table WHERE 1"
대신 입력을 필터링하고 삭제하는 것이 좋습니다. 한 가지 방법은 쿼리를 동적으로 실행하는 함수에 단축 매개변수를 전달하는 것입니다. 그런 다음 유효한 테이블 이름을 허용 목록에 추가하기 위해 switch() 문을 사용할 수 있습니다. 예:
function buildQuery( $get_var ) { switch($get_var) { case 1: $tbl = 'users'; break; } $sql = "SELECT * FROM $tbl"; }
기본 케이스를 생략하거나 오류 메시지를 표시하는 케이스를 사용하면 원하는 값만 활용되도록 보장할 수 있습니다.
위 내용은 PHP PDO 준비된 문은 테이블 또는 열 이름에 대한 매개변수를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!