Medoo

开始

更新日志

Where 语句

查询

聚合

Fetch

事务

管理

原生SQL查询

Raw object

PDO object

Debug

数据库信息

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 ..."
}