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

PDO - truy vấn không đưa ra kết quả

Vấn đề ở đây là bạn ràng buộc các tham số với bindParam , sử dụng ràng buộc bằng tham chiếu. Trong trường hợp của bạn, bạn nên sử dụng bindValue thay vào đó:

foreach( $binders as $key => $value ) {
    $sql->bindValue( $key, $value );
}

Hoặc bạn có thể chuyển trực tiếp mảng của mình tới execute() phương pháp:

$sql->execute( $binders );

Như được mô tả trong sách hướng dẫn:

the variable is bound as a reference and will only be evaluated at the time that PDOStatement::execute() is called.

Vì vậy, khi vòng lặp foreach của bạn kết thúc $value có giá trị của mục mảng cuối cùng Apple . Vì vậy, khi execute chạy, cả :ctid:p1 các giá trị đang trở nên bằng với Apple . Chắc chắn, đây không phải là điều bạn muốn)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng nhóm từ hai bảng theo ngày trong MySQL

  2. Trường số nguyên MySQL được trả về dưới dạng chuỗi trong PHP

  3. Cách nhóm theo thứ tự DESC

  4. Cách chạy nhiều phiên bản MySQL trên cùng một máy

  5. Lưu trữ các giá trị thập lục phân dưới dạng nhị phân trong MySQL