2016-08-08 78 views
0

Ich verwende den folgenden Code, um Transaktionen in eine Datenbank einzugeben. Jeder Transaktion ist eine eindeutige "ID" zugeordnet. Daher habe ich in "phpMyAdmin" das Feld "id" (in meiner Datenbank eigentlich transaction_id genannt) als eindeutigen Wert deklariert, wodurch Duplikate verhindert werden. Wenn ich jetzt die Transaktionsdaten in die Datenbank lade, werden nur neue Transaktionen hinzugefügt.Wie zeige ich keinen doppelten Fehler bei der Verwendung von mysqli

Dies bewirkt, dass eine große Menge von doppelten Fehlern:

*Error: INSERT INTO Transactions (id, transaction_id ... Duplicate entry '#############' for key 'transaction_id'* 

Ich mag würde alle Fehler außer dem doppelten Fehler zeigen. Gibt es eine Möglichkeit, dies einfach mit einem else hinzuzufügen, wenn oder in der else-Anweisung unten?

if (mysqli_query($conn, $sql)) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
+0

Sie eine Auswahl vor dem Einsetzen verwenden könnte um zu überprüfen, ob der Datensatz bereits vorhanden ist ... – HorusKol

Antwort

2

Danke Jungs mit. Hier ist, was ich kam mit:

if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else if(mysqli_errno($conn) !== 1062) { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }

0

Je nachdem, was Sie mit dem Duplikat tun möchten, können Sie nur eine Auswahlabfrage verwenden, um die Existenz zu überprüfen und dann den Einsatz nicht durchführen.

Alternativ gibt es http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

Der Einsatz auf Duplikat-Klausel können Sie einen Datensatz aktualisieren, wenn es vorhanden ist, aber ein, wenn es nicht der Fall ist.

obligatorische Hinweis: stoppen mysqli und starten Sie gU