sql >> Databáze >  >> RDS >> Mysql

Vložit MYSQL tam, kde neexistuje s PDO

Váš dotaz vypadá úplně zmateně, zejména ve vašem EXISTS dílčí dotaz. Vybíráte MyTbl.ColA z tickets ???

Moje rada by byla jednoduše přidat jedinečné omezení na MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Poté zadejte svůj INSERT selže s jedinečným porušením omezení který může být zachycen v 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;
        }
    }
}

Chcete-li vyřešit chybovou zprávu, která se vám zobrazuje... je to proto, že nerozlišujete mezi INSERT tabulka a tabulka poddotazů.




  1. Dotaz, když parametr není žádný django

  2. Ukládání IPv6 adres v MySQL

  3. PHP PDO:jak opětovná příprava příkazu ovlivní výkon

  4. C#:Předá uživatelsky definovaný typ uložené proceduře Oracle