2008-11-20 15 views
5

Powiel możliwe:
PDO Prepared StatementsCzy istnieje sposób, aby zobaczyć przygotowane zapytanie, ponieważ zostanie ono wykonane w bazie danych?

Używam mysqli rozszerzenie w PHP i zastanawiam się, czy jest może jakiś sposób, aby zobaczyć przygotowane zapytanie jak to będzie realizowane na serwerze, np Zapytanie jest coś takiego

select * from table1 where id = ? and name = ? 

ale chcę zobaczyć zapytania po wartości są wypełnione, tak:

select * from table1 where id = 20 and name = "John" 
+0

Co stanie się, gdy zmienic_dump() twój obiekt mysqli_stmt? –

Odpowiedz

2

Duplikat PDO Prepared Statements

Krótka odpowiedź: nie. Przygotowane zapytanie nigdy nie zostanie przekonwertowane na oczekiwane zapytanie. Jest wykonywany bezpośrednio przez serwer bazy danych. Możesz użyć dziennika zapytań mysql lub nieudokumentowanej funkcji PDO debugDumpParams, ale oba są tylko przybliżeniami.

+2

Faktycznie, jeśli włączysz rejestrowanie zapytań MySQL, * robi * rejestrację przygotowanego zapytania z interpolowanymi wartościami parametrów. Wacky! –

+0

Dziwne rzeczy, które. – troelskn

0

Zobacz gdzie? Jeśli to Twój kod, masz zapytanie i masz przygotowane parametry, zarejestruj je osobno lub zamień w oryginalnym ciągu zapytania. Jeśli wiązanie się nie powiedzie, pojawi się błąd, w przeciwnym razie należy się spodziewać, że te same wartości zostaną "wypełnione" zgodnie z ich określeniem.

0

Jego sposób większość czasu jestem debugowania quires MySQL:...

$ q = "select * from Tabela1 gdzie id =" $ id "i name =" $ name; echo $ q;

Dane wyjściowe generują wszystkie zmienne przypisane do zapytania.

Mam nadzieję, że zrozumiałem dokładnie, czego pragniesz.

+0

Myślę, że ma na myśli, kiedy przygotowuje "wybierz * z tabeli 1, gdzie id =? I name =?" a następnie wykonuje go podając parametry $ id i $ name. –

+0

O ile '$ name' nie jest liczbą, to zapytanie zakończy się niepowodzeniem z powodu niecytowanego parametru ciągu. – T30

Powiązane problemy