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

Chèn MYSQL nơi không tồn tại với PDO

Truy vấn của bạn trông hoàn toàn lộn xộn, đặc biệt là trong EXISTS của bạn truy vấn phụ. Bạn đang chọn MyTbl.ColA từ tickets ???

Lời khuyên của tôi là chỉ cần thêm một ràng buộc duy nhất trên MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Sau đó, INSERT của bạn sẽ không thành công với một vi phạm ràng buộc duy nhất có thể bị bắt trong một PDOException .

$stmt = $pdo->prepare('INSERT INTO MyTbl (ColA, ColB) VALUES (?, ?)');
foreach ($loopme as $foo) {
    try {
        $stmt->execute([$foo->fooA, $foo->fooB]);
    } catch (PDOException $e) {
        $errorCode = $stmt->errorInfo()[1];
        if ($errorCode == 1586) {
            // I think 1586 is the unique constraint violation error.
            // Trial and error will confirm :)
        } else {
            throw $e;
        }
    }
}

Để giải quyết thông báo lỗi mà bạn đang thấy ... đó là do bạn không phân biệt được giữa INSERT bảng và bảng truy vấn phụ.




  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 -> chèn vào tbl (chọn từ bảng khác) và một số giá trị mặc định

  2. CHỌN một cột nếu cột kia rỗng

  3. Có bao nhiêu hàng là 'quá nhiều' đối với một bảng MySQL?

  4. LỖI 1049 (42000):Cơ sở dữ liệu không xác định 'mydatabasename'

  5. Thực thi một tập lệnh php trong javascript?