Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL Insert Dimana Tidak Ada dengan PDO

Kueri Anda terlihat benar-benar kacau, terutama di EXISTS . Anda sub-kueri. Anda memilih MyTbl.ColA dari tickets ???

Saran saya adalah dengan menambahkan batasan unik pada MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Kemudian, INSERT akan gagal dengan pelanggaran batasan unik yang dapat ditangkap dalam 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;
        }
    }
}

Untuk mengatasi pesan kesalahan yang Anda lihat... itu karena Anda tidak membedakan antara INSERT tabel dan tabel sub-kueri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung semua simpul anak dari data hierarkis dalam sebuah tabel

  2. Bagaimana Anda memasukkan konstanta PHP ke dalam kueri SQL?

  3. Cara menginstal MySQL di macOS

  4. Bagaimana Anda menghindari konflik nama kolom?

  5. Rangkaian konfigurasi CodeIgniter dan dukungan UTF-8