Версия: v2.3.0
debug
Включает режим отладки, чтобы вывести сгенерированный SQL без его выполнения.
debug()
Возвращаемое значение
[Medoo] Экземпляр Medoo с включенным режимом отладки.
Medoo выводит сгенерированный SQL без выполнения запроса. После завершения диагностики отключите режим отладки.
Сгенерированный SQL
Используйте
debug() для проверки SQL, сгенерированного текущим запросом.$database->debug()->select("bccount", [
"user_name",
"email"
], [
"user_id[<]" => 20
]);
// Результат:
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20
Опасный случай
В некоторых случаях один запрос выполняет несколько запросов SQL. Если вы вызовете
debug() по одному запросу, последующий код все равно будет выполняться, что может привести к неожиданному поведению.// Здесь ничего не выводится.
$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com"
]);
// Выводит сгенерированный запрос.
$post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]);
// Внимание: этот запрос будет выполнен. Поскольку выше уже был вызван debug(), теперь $post_id равен false.
$database->update("account", [
"level[+]" => 5,
"post" => $post_id
], [
"user_name" => "foo"
]);
Журналирование отладки
Чтобы отладить проект без добавления
debug() к каждому запросу, вызовите beginDebug(), чтобы начать журналирование. Затем вызовите debugLog(), чтобы остановить журналирование и вернуть все собранные SQL-запросы в виде массива.// Начинает ведение журнала отладки.
$database->beginDebug();
// Эти запросы не выполняются; они записываются в журнал отладки.
$database->select("account", ["user_name", "email"], ["user_id[<]" => 20]);
$database->update("account", ["level[+]" => 1], ["user_id[>]" => 100]);
// Вызовите debugLog(), чтобы остановить журналирование и вернуть все записанные SQL-запросы.
var_dump($database->debugLog());
// Результат:
array(2) {
[0]=> string(10) "SELECT ... FROM"
[1]=> string(10) "UPDATE ... SET ... WHERE ..."
}