Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL einfügen, wo nicht vorhanden mit PDO

Ihre Abfrage sieht völlig durcheinander aus, besonders in Ihren EXISTS Unterabfrage. Sie wählen MyTbl.ColA aus von tickets ???

Mein Rat wäre, einfach eine eindeutige Einschränkung für MyTbl (ColA, ColB) hinzuzufügen .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Dann Ihr INSERT schlägt mit einer eindeutigen Einschränkungsverletzung fehl die in einer PDOException abgefangen werden können .

$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;
        }
    }
}

Um die Fehlermeldung zu beheben, die Sie sehen ... es liegt daran, dass Sie nicht zwischen INSERT unterscheiden Tabelle und die Unterabfragetabelle.