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

kontrola duplicitního záznamu vs výsledek errorInfo použití PDO

Můžete to provést pomocí bloku try catch:

try {
   $prep->execute($values);
   // do other things if successfully inserted
} catch (PDOException $e) {
   if ($e->errorInfo[1] == 1062) {
      // duplicate entry, do something else
   } else {
      // an error other than duplicate entry occurred
   }
}

Můžete se také podívat na alternativy, jako je „INSERT IGNORE“ a „INSERT... ON DUPLICATE KEY UPDATE“ – i když si myslím, že jsou specifické pro MySQL a byly by v rozporu s přenositelností používání PDO, pokud vás to znepokojuje. .

Edit:Chcete-li více formálně odpovědět na vaši otázku, pro mě řešení č. 1 (defenzivní programátor) při plném použití účinně eliminuje bod jedinečného omezení na prvním místě. Takže bych souhlasil s vaší myšlenkou nechat MySQL starat se o kontrolu dat.



  1. Žebříček s miliony záznamů

  2. Převést mysql na mysqli?

  3. Nelze se připojit k databázi heroku postgresql z aplikace místního uzlu se sequelize

  4. Firebase FCM token – Kdy odeslat na server?