Mysql
 sql >> Database >  >> RDS >> Mysql

SQLSTATE[23000]:gestione degli errori di violazione del vincolo di integrità

La tua domanda sembra essere piuttosto vaga:o vuoi ignorare le tue violazioni dei vincoli di integrità o vuoi che siano un segnale che dice "niente più inserti".

Oltre alla risposta con insert ignore soluzione - quando si esegue la query e si ottiene SQLSTATE[23000]: Integrity constraint violation errore, ciò significa che PDO genera un'eccezione. Se non catch it, il tuo script viene ucciso. Se non vuoi che venga ucciso, avvolgi il tuo codice DB nel costrutto try-catch, ad esempio:

try {
    // code here
    $insertItem = $db->query("
                              INSERT INTO cart (userid, itemid) 
                              VALUES (:userid, :itemid)", 
                              array("userid"=>"175", "itemid"=>"12")
                            );
    // more code here
} catch(Exception $e) {
    // handle exception - 
    // find out if it is caused by integrity contraints violations
    // and if it is - merely go further
    // otherwise do something else, like re-throwing your exception
}

HTH