wake-up-neo.net

Fehler bei doppelten Einträgen behandeln - PHP MySQL

Ich habe ein Formular PHP, das Daten in meine MySQL-Datenbank eingibt. Mein Primärschlüssel ist einer der vom Benutzer eingegebenen Werte. Wenn der Benutzer einen Wert eingibt, der bereits in der Tabelle vorhanden ist, wird der MySQL-Fehler "Doppelter Eintrag" eingegebener Wert "für Schlüssel 1" zurückgegeben. .. Anstelle dieses Fehlers möchte ich den Benutzer darauf hinweisen, dass er ihn eingeben muss einen anderen Wert. Nur eine Echo-Nachricht oder etwas ... Ich denke, meine Frage lautet: Wie kann man einen bestimmten MySQL-Fehler in eine PHP -Meldung umwandeln? Vielen Dank

edit: nickfs Antwort ist Nizza, aber gibt es eine Möglichkeit, zwischen bestimmten Fehlern zu unterscheiden?

23
RobHardgood

Um nach diesem Fehler zu suchen, müssen Sie den Fehlercode suchen. Es ist 1062 für doppelten Schlüssel. Verwenden Sie dann das Ergebnis aus errno() zum Vergleich mit:

mysql_query('INSERT INTO ...');
if (mysql_errno() == 1062) {
    print 'no way!';
}

Ein Hinweis zum Programmierstil
Sie sollten immer versuchen, die Verwendung von magischen Zahlen zu vermeiden (Ich weiß, ich war derjenige, der dies in dieser Antwort vorstellte). Sie können stattdessen den bekannten Fehlercode (1062) einer Konstanten zuweisen (z. B. MYSQL_CODE_DUPLICATE_KEY). Dies macht es einfacher, Ihren Code zu verwalten, da die Bedingung in der if-Anweisung in einigen Monaten noch lesbar ist, wenn die Bedeutung von 1062 aus dem Speicher verschwunden ist :)

46
jensgram

Sie können den Rückgabewert von mysql_query überprüfen, wenn Sie das Einfügen durchführen.

$result = mysql_query("INSERT INTO mytable VALUES ('dupe')");

if (!$result) {
    echo "Enter a different value";
} else {
    echo "Save successful.";
}
3
nickf

versuchen Sie diesen Code, um doppelte Einträge zu behandeln und eine Echo-Nachricht anzuzeigen:

  $query = "INSERT INTO ".$table_name." ".$insertdata;
                if(mysqli_query($conn,$query)){
                    echo "data inserted into DB<br>";                   
                }else{
                   if(mysqli_errno($conn) == 1062)
                       echo "duplicate entry no need to insert into DB<br>";
                   else
                    echo "db insertion error:".$query."<br>";

                }//else end
1
Hassan Saeed
1
Codler

Mit der Funktion mysql_errno() werden die Fehlernummern zurückgegeben. Die Fehlernummer für doppelte Schlüssel lautet beispielsweise 1062. .__ 

$query = mysql_query("INSERT INTO table_name SET ...);
if (mysql_errno() == 1062){
    echo 'Duplicate key';
}
0
Chad timothy