PHP PDO 준비된 문의 바인딩 식별자 및 구문 키워드
동적 쿼리를 사용하면 테이블 이름, 열을 정의하는 변수를 활용하여 유연한 데이터베이스 작업이 가능합니다. 이름, 검색 값. 그러나 PDO 준비된 문을 사용하는 바인딩 식별자(테이블 또는 필드 이름) 또는 구문 키워드는 예기치 않은 결과를 초래할 수 있습니다.
문제:
bindParam() 또는 binValue를 사용하는 경우 () 식별자 또는 구문 키워드를 나타내는 변수를 바인딩하려면 예상 데이터베이스 대신 빈 배열이 반환됩니다.
설명:
PDO 준비된 문은 데이터 리터럴만 바인딩할 수 있습니다. 따라서 식별자나 키워드를 결합하려고 하면 원하는 결과가 나오지 않습니다.
해결책:
안전하고 안정적인 동적 쿼리를 생성하려면 다음이 중요합니다.
코드 예:
식별자 형식 지정 및 확인:
$field = "`" . str_replace("`", "``", $field) . "`";
키워드 허용 목록 및 확인:
$dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC';
그런 다음 준비된 변수에 정리된 변수를 포함시킵니다. 성명:
$stmt = $db->prepare(' SELECT * FROM ? WHERE ? LIKE ? '); $stmt->bindParam(1, $searchTable); $stmt->bindParam(2, $searchBy); $stmt->bindValue(3, '%' . $searchTerm . '%');
이러한 규칙을 준수함으로써 동적 데이터베이스 쿼리의 유효성과 보안을 보장할 수 있습니다.
위 내용은 PHP PDO 준비 문에서 식별자와 키워드를 바인딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!