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

PHP PDO:Làm thế nào để đối phó với bindValue () và các từ khóa dành riêng?

Khi bạn xây dựng chuỗi SQL (tôi nghĩ là chuẩn bị_lập_string), cũng như trong cả hai vòng lặp foreach nơi bạn liên kết dữ liệu, hãy chạy một số lượng tăng dần và thêm nó vào giá trị ràng buộc. Vì vậy, ":status" trở thành ":status1".

Một cái gì đó như:

$i = 1;
foreach ($data as $k => $v) {
    $this->_sth->bindValue(":{$k.$i}", $v);
    $i++;
}

Điều này sẽ giải quyết vấn đề của bất kỳ từ khóa dành riêng nào.

Nó cũng giải quyết vấn đề (mà tôi chắc rằng bạn sẽ gặp phải trong tương lai) khi bạn cần liên kết với cùng một trình giữ chỗ nhiều lần.

ví dụ. thay vì phần sau, điều này gây ra lỗi do hai liên kết trên:status placeholder

SELECT * from table WHERE `status` = :status AND `otherfield` = :status

Với số lượng tăng dần, giá trị này trở thành:

SELECT * from table WHERE `status` = :status1 AND `otherfield` = :status2

Hãy tận hưở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. Mysql:Đếm bản ghi (bao gồm cả 0) mỗi tháng

  2. django.db.utils.OperationalError:(2013, Mất kết nối với máy chủ MySQL lúc 'bắt tay:đọc gói giao tiếp i sinh dục', lỗi hệ thống:0)

  3. bao gồm mysql vào cmake

  4. Kích thước lược đồ MySQL

  5. Làm thế nào để tạo dữ liệu trong MySQL?