Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL Вмъкване там, където не съществува с PDO

Заявката ви изглежда напълно объркана, особено във вашите EXISTS подзаявка. Избирате MyTbl.ColA от tickets ???

Моят съвет би бил просто да добавите уникално ограничение към MyTbl (ColA, ColB) .

ALTER TABLE MyTbl ADD UNIQUE (ColA, ColB);

След това вашият INSERT ще се провали с уникално нарушение на ограничението която може да бъде уловена в 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;
        }
    }
}

За да адресирате съобщението за грешка, което виждате... това е, защото не правите разлика между INSERT таблица и таблицата на подзаявката.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на произволни резултати (подреждане по rand())

  2. MySQL заявка за търсене в поле с JSON низ

  3. Присъединете таблици от два различни сървъра

  4. диаграма на разпръскване в jfreechart от база данни

  5. Най-добрият начин да съхранявате работното време и да го запитвате ефективно