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

pdo thực hiện lỗi của

Từ PDO ::hướng dẫn chuẩn bị ;

Điều đó (thật đáng buồn) có nghĩa là bạn sẽ phải sao chép các ràng buộc của mình với các tên phụ để sử dụng cùng một giá trị hai lần trong một truy vấn. Không đẹp, đại loại như;

$sth = $db->prepare(
  'INSERT INTO track (`rsname`, `overallranknow`, `overalllevelnow`, `overallxpnow` )' .
    'VALUES (:name, :Overalln, :Overall1, :Overall2) '. 
    'ON DUPLICATE KEY UPDATE ' .
      "rsname = :name_2"  .
      "overallranknow = :Overalln_2" .
      "overalllevelnow = :Overall1_2" .
      "overallxpnow = :Overall2_2" 
);
$sth->bindValue(':name', $name, PDO::PARAM_STR);
$sth->bindValue(':name_2', $name, PDO::PARAM_STR);
$sth->bindValue(':Overalln', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overalln_2', $Overalln, PDO::PARAM_INT);
$sth->bindValue(':Overall1', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall1_2', $Overall[1], PDO::PARAM_INT);
$sth->bindValue(':Overall2', $Overall[2], PDO::PARAM_INT);
$sth->bindValue(':Overall2_2', $Overall[2], PDO::PARAM_INT);
$sth->execute();

CHỈNH SỬA:Vì MySQL cho phép VALUES từ khóa trong ON DUPLICATE KEY để không phải lặp lại các tham số, bạn nên sử dụng câu trả lời của @ YourCommonSense cho trường hợp chính xác này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tránh chèn các bản ghi trùng lặp trong MySQL

  2. Sử dụng con trỏ trong một thủ tục được lưu trữ để lặp hàng MySQL

  3. Nhận vị trí hàng trong truy vấn MYSQL

  4. Không thể thêm trình điều khiển mysql vào jboss

  5. SQLAlchemy DELETE Lỗi gây ra do có cả lười tải VÀ phiên bản động của cùng một mối quan hệ