> 백엔드 개발 > PHP 튜토리얼 > PDO 준비된 문에서 매개변수 보간된 최종 SQL 쿼리를 어떻게 검색할 수 있나요?

PDO 준비된 문에서 매개변수 보간된 최종 SQL 쿼리를 어떻게 검색할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-15 17:53:14
원래의
193명이 탐색했습니다.

How Can I Retrieve the Final, Parameter-Interpolated SQL Query from a PDO Prepared Statement?

PDO 준비된 명령문에서 원시 SQL 쿼리 검색

준비된 명령문의 맥락에서 "원시 SQL 쿼리 문자열" 개념 간단하지 않습니다. 준비된 문에서 PDOStatement::execute()가 호출되면 실행되는 SQL 문은 준비된 문 자체와 다릅니다.

매개변수 값으로 보간된 최종 SQL 쿼리에 액세스하는 것은 간단한 프로세스가 아닙니다. 준비된 진술에 내재되어 있습니다. 매개변수는 클라이언트 측의 준비된 문과 통합되지 않으므로 PDO에 액세스할 수 없습니다.

prepare() 작업 중에 SQL 문이 데이터베이스 서버로 전송되고, 실행() 시 매개변수가 별도로 전송됩니다. )이 호출됩니다. MySQL은 실행() 다음에 포함된 값이 포함된 최종 SQL을 표시하는 일반 쿼리 로그를 유지 관리합니다. 그러나 이 로그는 PDO 외부에 있으며 "원시" 쿼리 문자열을 나타내지 않습니다.

한 가지 해결 방법은 PDO 속성 PDO::ATTR_EMULATE_PREPARES를 설정하는 것입니다. 이 모드에서 PDO는 SQL 쿼리를 실행하기 전에 매개변수를 SQL 쿼리에 삽입합니다. 그러나 이 방법은 준비된 문의 효율성을 떨어뜨립니다.

PDOStatement 개체의 $queryString 속성은 잠재적인 솔루션처럼 보일 수 있지만 개체 초기화 중에만 설정되며 매개변수 보간을 반영하지 않습니다. 재작성된 쿼리를 기능으로 노출하는 것이 도움이 되지만 PDO::ATTR_EMULATE_PREPARES를 사용하지 않는 한 여전히 요구 사항을 충족하지 못할 것입니다.

MySQL 서버의 일반 쿼리 로그를 활용하면 재작성된 쿼리를 기록할 때 해결 방법이 제공됩니다. 그럼에도 불구하고 이는 로깅 중에만 적용되며 쿼리 실행에는 적용되지 않습니다.

위 내용은 PDO 준비된 문에서 매개변수 보간된 최종 SQL 쿼리를 어떻게 검색할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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