Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserir MYSQL onde não existe com PDO


Sua consulta parece completamente confusa, especialmente em seu EXISTS subconsulta. Você está selecionando MyTbl.ColA de tickets ???

Meu conselho seria simplesmente adicionar uma restrição exclusiva em MyTbl (ColA, ColB) .
ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Em seguida, seu INSERT falhará com uma violação de restrição exclusiva que pode ser capturado em uma 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;
        }
    }
}

Para resolver a mensagem de erro que você está vendo... é porque você não está diferenciando entre o INSERT tabela e a tabela de subconsulta.