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

Câu lệnh đã chuẩn bị sẵn mysqli num_rows trả về 0 trong khi truy vấn trả về lớn hơn 0

Khi bạn thực thi một câu lệnh thông qua mysqli, các kết quả thực sự không có trong PHP cho đến khi bạn tìm nạp chúng - kết quả do công cụ DB nắm giữ. Vì vậy, mysqli_stmt đối tượng không có cách nào để biết có bao nhiêu kết quả ngay sau khi thực hiện.

Sửa đổi mã của bạn như sau:

$stmt->execute();
$stmt->store_result(); // pull results into PHP memory

// now you can check $stmt->num_rows;

Xem hướng dẫn sử dụng

Điều này không áp dụng cho ví dụ cụ thể của bạn, nhưng nếu tập kết quả của bạn lớn, $stmt->store_result() sẽ tiêu tốn rất nhiều bộ nhớ. Trong trường hợp này, nếu tất cả những gì bạn quan tâm là tìm xem có ít nhất một kết quả được trả về hay không, đừng lưu trữ kết quả; thay vào đó, chỉ cần kiểm tra xem siêu dữ liệu kết quả có phải không:

$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;

Xem hướng dẫn sử dụng



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xung đột phạm vi ngày trong MySQL

  2. MySQL SELECT AS kết hợp hai cột thành một

  3. hiển thị dòng mới mysql trong HTML

  4. Làm cách nào để tôi có thể sử dụng các câu lệnh soạn sẵn trong CodeIgniter

  5. MySQL:Sắp xếp theo trường, đặt các ô trống ở cuối