2010-12-08 3 views
4

Ich habe nach ähnlichen Fragen ohne Erfolg gesucht.Überprüfen, ob vor dem Einfügen in MySQL DB in einem PHP-Skript Wert existiert

Ich habe dieses Stück Code:

form1.php

$query = "INSERT INTO table1 "; 
$query .= "(fname, lname, mail)"; 
$query .= " VALUES "; 
$query .= "('".$_POST[fname]."', '".$_POST[lname]."', '".$_POST[mail]."')"; 

$result = mysql_query($query) or die ("Query Failed: " . mysql_error()); 

Und ich möchte, dass das Skript überprüft, ob der Wert in der entsprechenden Spalte eingefügt vorhanden ist, und einen Fehler aus, wenn es tut. irgendwelche Ideen?

+1

Hinweis: Wenn Sie Stored Procedures anstelle von Inline-Abfragen verwenden, können Sie Ihren Code gut pflegen und Ihnen auch Vorteile wie kompilierte Abfragen, Syntaxprüfung, sql-Injektion usw. geben. – dhinesh

Antwort

10

Erstellen Sie einen eindeutigen Schlüssel für die Felder, die Sie interessieren, und erkennen Sie den Integritätsfehler nach der Tat.

+2

Dies ist wirklich der einzige Weg, Andernfalls endet die Wettlaufsituation, bei der das Versagen nicht bemerkt wird. Wenn Sie zuerst den Eintrag überprüfen und den Eintrag dort ablegen, wenn er nicht bereits vorhanden ist, lassen Sie die Möglichkeit offen, dass jemand den Datensatz zwischen Ihrer Existenzprüfung und dem Hinzufügen des Datensatzes hinzufügen kann. – AgentConundrum

+0

Danke Ignacio Vazquez-Abrams und AgentConundrum! – t0mgs

Verwandte Themen