sql >> Databasteknik >  >> RDS >> Mysql

MYSQL Insert Where Not Exists med PDO

Din fråga ser helt felaktig ut, särskilt i din EXISTS underfråga. Du väljer MyTbl.ColA från tickets ???

Mitt råd skulle vara att helt enkelt lägga till en unik begränsning på MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Sedan, din INSERT kommer att misslyckas med en unik begränsningsöverträdelse som kan fångas i en 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;
        }
    }
}

För att åtgärda felmeddelandet du ser... det beror på att du inte skiljer på INSERT tabellen och sub-frågetabellen.




  1. Hur får jag det senast infogade ID:t för en MySQL-tabell i PHP?

  2. Okänd kolumn i var klausul

  3. SQLite Byt namn på kolumn

  4. SQL Server - transaktioner återgår vid fel?