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

verifique se há entrada duplicada vs use o resultado PDO errorInfo


Você poderia estar executando isso com um bloco 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
   }
}

Você também pode procurar alternativas como "INSERT IGNORE" e "INSERT... ON DUPLICATE KEY UPDATE" - embora eu ache que essas são específicas do MySQL e iriam contra a portabilidade de usar o PDO, se isso é algo que você está preocupado .

Edit:Para responder mais formalmente à sua pergunta, para mim, a solução nº 1 (o programador defensivo) em uso total elimina efetivamente o ponto da restrição exclusiva em primeiro lugar. Então eu concordo com o seu pensamento de deixar o MySQL cuidar da verificação de dados.