반응형
PDO 준비 스테이트먼트에서 쿼리를 되돌리기
PDO Prepared 문 개체를 생성하는 데 사용된 쿼리를 가져올 수 있는 방법이 있습니까?
$statement->queryString을 사용해 보십시오.
원하는 것을 실현하는 가장 간단한 방법은 다음과 같습니다.
$statement->debugDumpParams();
스테이트먼트를 실행한 후에 반드시 추가해 주세요.
기본 \PDO 및 \PDOStatement 개체를 확장하는 데 반대하지 않는 경우 다음 사항을 검토할 수 있습니다.
github.com/noahheck/E_PDOStatement
PDO로 확장하면 데이터베이스 수준에서 실행될 수 있는 작업의 예로 전체 쿼리 문을 볼 수 있습니다.PDO 문의 경계 파라미터를 보간하기 위해 regex를 사용합니다.
기본 \PDOStatement 정의를 확장함으로써 E_PDOStatement는 일반 워크플로우 변경 없이 기본 기능을 확장할 수 있습니다.
면책사항:이 확장자를 만들었습니다.
그게 다른 사람에게 도움이 됐으면 좋겠어요.
이 순서는 유효합니다.debug Dump Params()는 출력을 반환하지 않기 때문입니다.여기 내가 고안한 작은 속임수가 있다.
// get the output before debugDumpParams() get executed
$before = ob_get_contents();
//start a new buffer
ob_start();
// dump params now
$smt->debugDumpParams();
// save the output in a new variable $data
$data = ob_get_contents();
// clean the output screen
ob_end_clean();
// display what was before debugDumpParams() got executed
printf("%s", $before);
$statement = "";
// Now for prepared statements
if (stristr($data, 'Sent SQL') !== false)
{
// begin extracting from "Sent SQL"
$begin = stristr($data, 'Sent SQL');
// get the first ] square bracket
$square = strpos($begin, "]");
// collect sql
$begin = substr($begin, $square + 1);
$ending = strpos($begin, "Params");
$sql = substr($begin, 0, $ending);
$sql = trim($sql);
// sql statement here
$statement = $sql;
}
else
{
if (stristr($data, 'SQL') !== false)
{
$begin = stristr($data, 'SQL');
// get the first ] square bracket
$square = strpos($begin, "]");
// collect sql
$begin = substr($begin, $square + 1);
$ending = strpos($begin, "Params");
$sql = substr($begin, 0, $ending);
$sql = trim($sql);
$statement = $sql;
}
}
// statement here
echo $statement;
이게 도움이 됐으면 좋겠다.
언급URL : https://stackoverflow.com/questions/2243177/get-query-back-from-pdo-prepared-statement
반응형
'source' 카테고리의 다른 글
다양한 목록 지우기 방법 (0) | 2022.11.16 |
---|---|
MySQL collation_server가 특수 문자를 구분합니다. (0) | 2022.11.16 |
j쿼리 날짜/시간 선택기 (0) | 2022.11.16 |
JavaScript를 사용하여 문자열에서 문자를 삭제하려면 어떻게 해야 합니까? (0) | 2022.11.16 |
부동값을 인쇄할 때 과학적 표기법을 사용하지 않는 방법은 무엇입니까? (0) | 2022.11.15 |