2010-04-22 3 views
7

Ich habe eine komplexe Abfrage, die wie folgt ausgeführt wird:Gibt es eine Möglichkeit, die tatsächliche Abfrage zu drucken, die mysqli-> execute() ausführt?

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); 
    } 

Dieses Ding ohne Fehler ausfällt, ist es nicht einfach, die Datenbank zu aktualisieren. Da es eine Menge Daten gibt, die vor dieser Sache behandelt werden, würde ich gerne wissen, ob es eine Möglichkeit gibt, die tatsächliche Abfrage, die mysqli ausführt, zu zeigen, um zu verstehen, wo das Problem liegt.

Vielen Dank.

+1

Ist nicht möglich zu sein scheinen. Dupe: http://stackoverflow.com/questions/962986/how-to-echo-a-mysqli-prepared-statement –

Antwort

8

Wenn Ihre Anweisung fehlschlägt, sollten Sie $stmt->error überprüfen (im Gegensatz zu $dbi->error). Soweit den eigentlichen Text der Abfrage zu bekommen: es ist nicht möglich. Wenn vorbereitete Anweisungen verwendet werden, verwendet die Bibliothek ein spezielles Protokoll, das keine tatsächliche Abfragezeichenfolge für jeden Aufruf ->execute() generiert.

+0

Danke, wusste nie darüber. $ stmt-> error hat mich in die richtige Richtung gebracht. – 0plus1

0

Basierend auf der PHP mysql website gibt es keine tatsächliche Möglichkeit, es zu tun. Aber Sie können versuchen this function, da es Ihnen Fehler in Ihrer Abfrage gibt.

5

Sie könnten die MySQL DB selbst an, dh. füge ein log = logfile Zeile zu my.ini hinzu.

Weitere Informationen erhalten Sie bei Bedarf unter MySQL documentation.

Verwandte Themen