2012-12-10 3 views
0

준비된 매개 변수를 사용하여 PDO로 코딩 된 SQL 문자열을 표시 할 수 있습니까? :PDO로 코딩 된 SQL 문자열을 표시 하시겠습니까?

$nom_client = $dbh->prepare("SELECT client.IdClient,Nom_societe FROM client 
              LEFT JOIN intermediaire_has_client ON IdClient=intermediaire_has_client.Client_IdClient 
              WHERE intermediaire_has_client.Intermediaire_IdIntermediaire=:id_inter"); 

$nom_client->bindValue(":id_inter",$_SESSION['num_agence'],PDO::PARAM_INT); 
$nom_client->execute(); 

미리 감사드립니다.

답변

1

SQL 문자열이 "코딩되지 않았습니다". 자리 표시자는 복사하여 붙여 넣기 할 수 없습니다. 쿼리와 값은 실제로 두 개의 별도 파트로 데이터베이스에 전송됩니다. 데이터베이스는 동일한 "자리 표시 자 쿼리"를보고 값을 별도로 가져옵니다.

+0

에뮬레이트 된 준비 모드도 마찬가지로 불투명하다고 할 수 있습니다. – Charles

+0

에뮬레이트 된 자리 표시자를 사용하지 않아야하며 사용하지 않아도되므로 자리 표시자를 사용하지 마십시오. : o) – deceze

+0

사실. 그러나 OP 질문의 정신에서 PDO가 도망가는 마술을 치룬 후에 가치를 볼 수 있습니까? – dnagirl

2

모든 매개 변수가 포함 된 최종 "쿼리"를 보려는 경우 PHP 코드 내에서 얻은 정보를 얻을 수 없습니다.

준비된 문이 작동하는 방식은 매개 변수 자리 표시자가있는 기반 쿼리가 MySQL로 보내지고 "준비 됨"입니다. MySQL에 대한 호출은 매개 변수 자체를 전달하기 만하면된다. 따라서 매개 변수가있는 전체 쿼리는 절대로 존재하지 않습니다.

가장 좋은 방법은 MySQL 쿼리 로그에 로그인하는 것입니다 (모든 쿼리를 기록하도록 MySQL을 구성해야 할 수도 있음). 쿼리의 최종 해석 된 표현을 볼 수 있습니다.

+0

쿼리를 보는 좋은 방법은 다음과 같습니다. echo str_replace (array_keys ($ data), array_values ​​($ data), $ requete-> queryString); – beegees

관련 문제