Version: v2.3.0
debug
Den Debug-Modus aktivieren, um das generierte SQL auszugeben, ohne es auszuführen.
debug()
Rückgabewert
[Medoo] Die Medoo Instanz mit aktiviertem Debug-Modus.
Medoo gibt das generierte SQL aus, ohne es auszuführen. Deaktivieren Sie den Debug-Modus nach der Fehlerbehebung.
Generiertes SQL
Verwenden Sie
debug(), um den von der aktuellen Abfrage generierten SQL zu überprüfen.$database->debug()->select("bccount", [
"user_name",
"email"
], [
"user_id[<]" => 20
]);
// Ausgabe:
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20
Gefährlicher Fall
In manchen Fällen führt eine einzelne Anfrage mehrere SQL Abfragen aus. Wenn Sie bei einer Abfrage
debug() aufrufen, wird der nachfolgende Code weiterhin ausgeführt, was zu unerwartetem Verhalten führen kann.// Dies gibt nichts aus.
$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com"
]);
// Gibt die erzeugte Abfrage aus.
$post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]);
// Achtung: Diese Abfrage wird ausgefuehrt. Da debug() oben bereits lief, ist $post_id jetzt false.
$database->update("account", [
"level[+]" => 5,
"post" => $post_id
], [
"user_name" => "foo"
]);
Debug-Protokollierung
Um Ihr Projekt zu debuggen, ohne
debug() zu jeder Abfrage hinzuzufügen, rufen Sie beginDebug() auf, um mit der Protokollierung zu beginnen. Rufen Sie dann debugLog() auf, um die Protokollierung zu stoppen und alle gesammelten SQL-Anweisungen als Array zurückzugeben.// Startet die Debug-Protokollierung.
$database->beginDebug();
// Diese Abfragen werden nicht ausgefuehrt; sie werden nur im Debug-Protokoll aufgezeichnet.
$database->select("account", ["user_name", "email"], ["user_id[<]" => 20]);
$database->update("account", ["level[+]" => 1], ["user_id[>]" => 100]);
// Rufen Sie debugLog() auf, um die Protokollierung zu beenden und alle aufgezeichneten SQL-Anweisungen zurueckzugeben.
var_dump($database->debugLog());
// Ausgabe:
array(2) {
[0]=> string(10) "SELECT ... FROM"
[1]=> string(10) "UPDATE ... SET ... WHERE ..."
}