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

проверете за дублиран запис срещу резултат за използване на PDO errorInfo

Може да изпълните това с блок за улавяне на проби:

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
   }
}

Можете също така да разгледате алтернативи като "INSERT IGNORE" и "INSERT... ON DUPLICATE KEY UPDATE" - въпреки че мисля, че те са специфични за MySQL и биха били в противоречие с преносимостта на използването на PDO, ако това е нещо, което ви притеснява .

Редактиране:За да отговоря по-официално на вашия въпрос, за мен решение #1 (защитният програмист) при пълно използване ефективно елиминира точката на уникалното ограничение на първо място. Така че бих се съгласил с вашата мисъл да оставите MySQL да се погрижи за проверката на данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. командата mysqldump не работи?

  2. Единични кавички, двойни кавички и обратни кавички в MySQL

  3. mysql брой записи в курсора без повторение?

  4. MySql.ConnectorNET.Data срещу MySql.Data

  5. Отстраняване на неизправности:MySQL/MariaDB грешка #1044 и #1045 Достъпът е отказан за потребителя