2012-07-25 5 views
7

Ich füge Daten in eine MySQL DB ein, falls die Einfügung fehlschlägt, muss ich eine entsprechende Fehlermeldung geben, die dies anzeigt. Gemäß meinem Code unten werde ich Echo-ing die Nachricht Inserted sein, wenn die Einfügung Erfolg oder Misserfolg war.Einfügen von Daten in MySql DB und Anzeige, ob die Einfügung Erfolg oder Misserfolg ist

Was ich tun möchte, ist die Nachricht Inserted Echo nur, wenn die Dateneinfügung ein Erfolg ist, und fail zurückgeben, wenn es fehlschlägt. Wie kann ich meinen Code ändern, um dies zu tun?

<?php 

mysql_connect("localhost", "root", "123") or die(mysql_error()); 
mysql_select_db("swm_database") or die(mysql_error()); 

mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")or die(mysql_error()); 

echo "Inserted"; 
?> 
+0

Die Antworten unten geben bereits an, was Sie tun sollten, aber denken Sie daran, mysqli oder PDO anstelle der mysql_ * -Funktionen zu verwenden. –

Antwort

24
$result = mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")); 
if($result) 
{ 
echo "Success"; 

} 
else 
{ 
echo "Error"; 

} 
3

Nach INSERT Abfrage können Sie ROW_COUNT() verwenden für eine erfolgreichen Einsatz Betrieb zu überprüfen, wie:

SELECT IF(ROW_COUNT() = 1, "Insert Success", "Insert Failed") As status; 
+1

Return true garantiert nicht, dass die Daten in die Datenbank eingefügt wurden, kann ich das sagen? – Timeless

+0

Ja, dies ist der sicherste Weg, da die Rückgabe von True im Falle einer INSERT IGNORE-Abfrage nicht funktioniert. – Omesh

1
if (mysql_query("INSERT INTO PEOPLE (NAME) VALUES ('COLE')")or die(mysql_error())) { 
    echo 'Success'; 
} else { 
    echo 'Fail'; 
} 

Obwohl seit Sie or die(mysql_error()) haben es die mysql_error zeigen() auf dem Bildschirm wenn es fehlschlägt. Sie sollten wahrscheinlich entfernen, wenn es ist nicht das gewünschte Ergebnis

2

Nach dem Buch PHP and MySQL for Dynamic Web Sites (4th edition)

Beispiel:

$r = mysqli_query($dbc, $q); 

Für einfache Abfragen wie INSERT , UPDATE, DELETE usw. (die keine Datensätze zurückgeben), die $r Variable-short für Ergebnis-wird entweder TRUE oder FALSE, je nachdem, ob die Abfrage erfolgreich ausgeführt wurde.

Beachten Sie, dass "erfolgreich ausgeführt" bedeutet, dass es ohne Fehler ausgeführt wurde; es bedeutet nicht, dass die Ausführung der Abfrage unbedingt das gewünschte Ergebnis hatte; Sie müssen dafür testen.

Dann wie testen?

Während die mysqli_num_rows() Funktion wird die Anzahl der Zeilen, die von einem SELECT Abfrage zurückgeben, mysqli_affected_rows() gibt die Anzahl der Zeilen, die von einer INSERT betroffen, UPDATE oder DELETE Abfrage. Er wird verwendet wie folgt:

$num = mysqli_affected_rows($dbc); 

Im Gegensatz zu mysqli_num_rows(), die ein Argument der Funktion übernimmt die Datenbankverbindung ($ DBC), nicht die Ergebnisse der vorherigen Abfrage ($ r).

Verwandte Themen