Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQLSTATE[23000]:Fehlerbehandlung bei Integritätsbeschränkungsverletzung

Ihre Frage scheint ziemlich vage zu sein - entweder möchten Sie Ihre Integritätsbeschränkungsverletzungen ignorieren, oder Sie möchten, dass sie ein Signal mit der Aufschrift "keine Einfügungen mehr" sind.

Zusätzlich zur Antwort mit insert ignore Lösung - Wenn Sie Ihre Abfrage ausführen und SQLSTATE[23000]: Integrity constraint violation erhalten Fehler, das bedeutet, dass PDO eine Ausnahme auslöst. Wenn Sie nicht catch es, Ihr Skript wird getötet. Wenn Sie nicht möchten, dass es beendet wird, packen Sie Ihren DB-Code in ein Try-Catch-Konstrukt, d. h.:

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