VI Tiếng Việt
Phiên bản: v2.3.0

debug

Bật chế độ debug để xem SQL đã tạo mà không thực thi truy vấn.

debug()
Giá trị trả về
[Medoo] Đối tượng Medoo đã bật chế độ debug.
Medoo xuất SQL đã tạo ra mà không thực thi truy vấn. Hãy tắt chế độ debug sau khi hoàn tất việc kiểm tra.

SQL được tạo

Sử dụng debug() để kiểm tra SQL được tạo bởi truy vấn hiện tại.
$database->debug()->select("bccount", [
	"user_name",
	"email"
], [
	"user_id[<]" => 20
]);

// Kết quả:
// SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20

Điều cần lưu ý

Trong một số trường hợp, một request sẽ thực thi nhiều truy vấn SQL. Nếu bạn gọi debug() trên một truy vấn, phần mã tiếp theo vẫn tiếp tục chạy và điều này có thể dẫn đến hành vi ngoài ý muốn.
// Đoạn này sẽ không in ra gì cả.
$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com"
]);

// In ra truy vấn đã được tạo.
$post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]);

// Lưu ý: truy vấn này vẫn sẽ được thực thi. Vì debug() đã chạy ở trên nên $post_id bây giờ là false.
$database->update("account", [
	"level[+]" => 5,
	"post" => $post_id
], [
	"user_name" => "foo"
]);

Ghi nhật ký gỡ lỗi

Để gỡ lỗi dự án của bạn mà không cần thêm debug() vào mọi truy vấn, hãy gọi beginDebug() để bắt đầu ghi nhật ký. Sau đó gọi debugLog() để dừng ghi nhật ký và trả về tất cả các câu lệnh SQL đã thu thập dưới dạng một mảng.
// Bắt đầu ghi log debug.
$database->beginDebug();

// Các truy vấn này không được thực thi; chúng chỉ được ghi vào debug log.
$database->select("account", ["user_name", "email"], ["user_id[<]" => 20]);
$database->update("account", ["level[+]" => 1], ["user_id[>]" => 100]);

// Gọi debugLog() để dừng ghi log và trả về tất cả các câu lệnh SQL đã được ghi lại.
var_dump($database->debugLog());

// Kết quả:
array(2) {
  [0]=> string(10) "SELECT ... FROM"
  [1]=> string(10) "UPDATE ... SET ... WHERE ..."
}