Vấn đề là mysql_query()
đang trả về một boolean thay vì một tài nguyên kết quả. Có hai lý do khiến điều này có thể xảy ra:
- Bạn đã thực hiện truy vấn trả về thành công / thất bại thay vì tập hợp kết quả (ví dụ:
UPDATE
) - Truy vấn của bạn không thành công
Trong trường hợp của bạn, truy vấn không thành công. Lý do nó không thành công là vì bạn đã thoát khỏi dấu tích phía sau trong chuỗi PHP mà bạn không cần phải làm như vậy.
Các dòng của bạn trông như thế này:
$siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);
Khi chúng nên đơn giản là thế này:
$siteTitle = mysql_result(mysql_query("SELECT `siteTitle` FROM siteSettings"), 0);
Bây giờ, một số lưu ý phụ:
- Không viết mã mới sử dụng
mysql_*
chức năng. Chúng không được dùng nữa và cuối cùng sẽ bị xóa khỏi PHP. Sử dụng MySQLi hoặc PDO thay vào đó (cá nhân tôi đề xuất PDO, YMMV) - Lồng các hàm cơ sở dữ liệu theo cách này không phải là cách đặc biệt tốt để viết mã của bạn. Tốt hơn hết là bạn nên kiểm tra lỗi rõ ràng sau mỗi lần gọi hàm.
Ví dụ:
$result = mysql_query("SELECT somecol FROM sometable");
if (!$result) {
// Handle error here
}
// Now process the result
- Bạn nên trích dẫn tất cả các số nhận dạng hoặc không có số nhận dạng nào trong các truy vấn của mình (tốt nhất là tất cả). Chỉ trích dẫn một số khiến khó đọc hơn.
Ví dụ.
SELECT `siteTitle` FROM `siteSettings`