Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cảnh báo:mysql_result () mong đợi tham số 1 là tài nguyên, boolean đã cho

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:

  1. 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 )
  2. 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`



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Loại bỏ hoàn toàn MySQL 5.7

  2. Khôi phục cấu trúc bảng từ các tệp frm và ibd

  3. Sử dụng ORDER BY và GROUP BY cùng nhau

  4. Thay thế các hàm mysql_ * bằng PDO và các câu lệnh đã chuẩn bị

  5. Kích thước tối đa VARCHAR của MySQL là gì?