sql >> Database >  >> RDS >> Mysql

MYSQL invoegen waar niet bestaat met PDO

Je zoekopdracht ziet er totaal verkeerd uit, vooral in je EXISTS sub-query. U selecteert MyTbl.ColA van tickets ???

Mijn advies zou zijn om gewoon een unieke beperking toe te voegen aan MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

Vervolgens uw INSERT zal mislukken met een unieke beperkingsschending die kan worden gevangen in een 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;
        }
    }
}

Om de foutmelding die u ziet te verhelpen... dit komt omdat u geen onderscheid maakt tussen de INSERT tabel en de subquerytabel.




  1. sorteren op hoog-lage prijs met mysql-gegevens

  2. Het negeren van apostrofs in mysql-zoekopdrachten

  3. Hoe vermeld ik alle kolommen in een tabel?

  4. waarschuwingsprobleem:verwacht dat parameter 1 mysqli_result is