2010-04-22 6 views
7

Mam skomplikowaną kwerendę, która pobiera wykonywane tak:Czy istnieje sposób wydrukowania faktycznego zapytania, które robi mysqli-> execute()?

if ($stmt = $dbi->prepare($pt_query)) { 
     $stmt->bind_param('ssssssssi', $snome,$scognome,$ssocieta,$svia,$slocalita,$sprovincia,$scap,$stelefono,$sfax,$uid); 
     $stmt->execute();   
     echo $dbi->error; 
     $stmt->close(); 

    } else { 
     printf("Error -> %s\n", $dbi->error); 
    } 

Ta rzecz się niepowodzeniem bez błędów, to po prostu nie aktualizuje bazę danych. Ponieważ istnieje mnóstwo danych, które są traktowane przed tym czymś, chciałbym wiedzieć, czy istnieje sposób na pokazanie faktycznego zapytania, które wykonuje mysqli, aby zrozumieć, gdzie jest problem.

Dziękuję.

+1

nie wydaje się być możliwe. Dupe: http://stackoverflow.com/questions/962986/how-to-echo-a-mysqli-prepared-statement –

Odpowiedz

8

Jeśli twoje oświadczenie się nie powiedzie, powinieneś sprawdzić $stmt->error (w przeciwieństwie do $dbi->error). Jeśli chodzi o uzyskanie aktualnego tekstu zapytania: nie jest to możliwe. Podczas korzystania z przygotowanych instrukcji biblioteka używa specjalnego protokołu, który nie generuje faktycznego ciągu zapytania dla każdego połączenia ->execute().

+0

Dziękuję, nigdy nie wiedziałem o tym. $ stmt-> error doprowadził mnie we właściwym kierunku. – 0plus1

5

Można włączyć logowanie samego DB MySQL, tj. dodaj log = logfile linię do my.ini.

Więcej informacji można uzyskać, dzwoniąc pod numer MySQL documentation.

Powiązane problemy