Debug
启用调试模式并输出可读的语句字符串。
debug()
返回: [object] 启用调试模式的 Medoo 对象。
此功能将自动输出生成的 SQL 查询,而无需使用 echo 或其他函数。请在完成调试后保持移除,并检查如果此查询未执行,以下代码是否会正常执行。
基本用法
输出生成的 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"]); // 请注意,此查询将被执行!$post_id 现在已成为 false 值,因为上面运行了 debug()。 $database->update("account", [ "level[+]" => 5, "post" => $post_id ], [ "user_name" => "foo" ]);
调试日志
要调试整个或部分项目而无需在每个调用中放置 debug(),您可以使用 beginDebug() 开始调试日志记录,然后调用 debugLog() 停止它并将所有调试日志作为数组获取。
// 开始调试日志记录 $database->beginDebug(); // 所有这些函数将不会被执行,但会将其保存为调试日志。 $database->select()...... $database->update()...... // 调用 debugLog() 停止调试日志记录并返回所有调试日志作为数组。 var_dump($database->debugLog()); // 将输出: array(2) { [0]=> string(10) "SELECT ... FROM" [1]=> string(10) "UPDATE ... SET ... WHERE ..." }