Version: v2.3.0
debug
Active le mode débogage pour afficher le SQL généré sans l’exécuter.
debug()
Valeur de retour
[Medoo] Instance Medoo avec le mode débogage activé.
Medoo affiche le SQL généré sans l’exécuter. Désactivez le mode débogage une fois le diagnostic terminé.
SQL généré
Utilisez
debug() pour inspecter le SQL généré par la requête actuelle.$database->debug()->select("bccount", [
"user_name",
"email"
], [
"user_id[<]" => 20
]);
// Sortie :
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20
Cas dangereux
Dans certains cas, une seule requête exécute plusieurs requêtes SQL. Si vous appelez
debug() sur une requête, le code suivant s'exécute toujours, ce qui peut entraîner un comportement inattendu.// Ceci ne produit aucune sortie.
$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com"
]);
// Affiche la requete generee.
$post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]);
// Attention : cette requete sera executee. Comme debug() a deja ete appele plus haut, $post_id vaut maintenant false.
$database->update("account", [
"level[+]" => 5,
"post" => $post_id
], [
"user_name" => "foo"
]);
Journalisation du débogage
Pour déboguer votre projet sans ajouter
debug() à chaque requête, appelez beginDebug() pour démarrer la journalisation. Appelez ensuite debugLog() pour arrêter la journalisation et renvoyer toutes les instructions SQL collectées sous forme de tableau.// Demarre la journalisation de debogage.
$database->beginDebug();
// Ces requetes ne sont pas executees ; elles sont enregistrees dans le journal de debogage.
$database->select("account", ["user_name", "email"], ["user_id[<]" => 20]);
$database->update("account", ["level[+]" => 1], ["user_id[>]" => 100]);
// Appelez debugLog() pour arreter la journalisation et renvoyer toutes les instructions SQL enregistrees.
var_dump($database->debugLog());
// Sortie :
array(2) {
[0]=> string(10) "SELECT ... FROM"
[1]=> string(10) "UPDATE ... SET ... WHERE ..."
}