> 백엔드 개발 > PHP 튜토리얼 > PDO 준비된 문에서 최종 SQL 쿼리 문자열을 어떻게 검색할 수 있습니까?

PDO 준비된 문에서 최종 SQL 쿼리 문자열을 어떻게 검색할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-13 07:32:14
원래의
688명이 탐색했습니다.

How Can I Retrieve the Final SQL Query String from PDO Prepared Statements?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿