Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstaw MYSQL tam, gdzie nie istnieje z PDO

Twoje zapytanie wygląda na kompletnie pomieszane, zwłaszcza w EXISTS podzapytanie. Wybierasz MyTbl.ColA z tickets ????

Radzę po prostu dodać unikalne ograniczenie do MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Następnie Twój INSERT nie powiedzie się z unikalnym naruszeniem ograniczeń które można złapać w 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;
        }
    }
}

Aby rozwiązać wyświetlany komunikat o błędzie... dzieje się tak, ponieważ nie rozróżniasz między INSERT tabeli i tabeli podzapytania.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL, aby sprawdzić typ produktu w WooCommerce

  2. czy można mieć sortowanie utf8 z uwzględnieniem akcentu i wielkości liter w mysql?

  3. Jak używać mysqli_query() w PHP?

  4. Dlaczego funkcje mysql_ PHP są przestarzałe?

  5. Porównanie zakresów dat