PDO 준비된 문에서 원시 SQL 쿼리 문자열 검색
쿼리 실행을 위해 PDO 준비된 문을 활용하는 경우 디버깅 목적으로 유용할 수 있습니다. 실행되는 원시 SQL 문자열을 검색합니다. 그러나 매개변수화된 쿼리와 달리 준비된 문은 매개변수를 클라이언트측 SQL 쿼리와 결합하지 않습니다.
prepare() 및 excute() 작업 중에 SQL 문과 매개변수가 데이터베이스 서버로 별도로 전송됩니다. , 각각. 결과적으로 PDO는 매개변수와 결합된 SQL 문자열에 대한 액세스가 부족합니다.
MySQL 일반 쿼리 로그:
보간된 값으로 최종 쿼리를 캡처하는 한 가지 방법은 다음을 사용하는 것입니다. MySQL의 일반 쿼리 로그입니다. 이 로그는 Execute() 호출 이후의 최종 SQL 문을 기록합니다. 그러나 이 기술을 사용하려면 MySQL 서버에서 일반 쿼리 로그를 활성화해야 합니다.
PDO 준비된 명령문 에뮬레이션:
또 다른 옵션은 PDO 속성 PDO::ATTR_EMULATE_PREPARES를 활성화하는 것입니다. . 이 모드에서 PDO는 실행 중에 매개변수를 전송하기 전에 SQL 쿼리에 매개변수를 삽입합니다. 그러나 이 방법은 준비된 문 실행이 아니며 준비된 쿼리 사용의 이점을 우회한다는 점에 유의하는 것이 중요합니다.
PDOStatement 속성 혼동:
초기 액세스 시도 보간된 쿼리에는 PDOStatement 속성 $queryString을 참조하는 작업이 포함될 수 있습니다. 그러나 이 속성은 PDOStatement 생성자 중에만 설정되며 매개변수가 쿼리에 삽입될 때 업데이트되지 않습니다.
재작성된 쿼리의 노출:
잠재적인 기능 개선: PDO는 다시 작성된 쿼리를 노출하는 것입니다. 이 접근 방식도 PDO::ATTR_EMULATE_PREPARES를 사용할 때만 완전한 쿼리를 제공합니다.
해결 방법:
대안으로 MySQL 서버의 일반 쿼리 로그를 사용할 수 있습니다. 쿼리 실행 후 보간된 매개변수 값으로 다시 작성된 쿼리를 보려면
위 내용은 PDO 준비된 문에서 최종 SQL 쿼리 문자열을 어떻게 검색할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!