Ich möchte doppelte Werte in einer Datenbanktabelle von einem Formular mit PHP verhindern.verhindern, Daten in die Datenbank einzufügen, wenn ein bestimmtes Attribut bereits existiert
Ich habe eine Tabelle Daten auf Datenbank, die atribute dataid (Autoinkrement als Primärschlüssel), data1, data2.
Und ich habe eine einfache Form wie diese
<h2>Enter your data</h2>
<form action="script.php" method="post">
Data 1:<input type="text" name="data1" /></p>
Data 2:<textarea name="data2"></textarea></p>
<input type="submit" name="submit" value="Add Data" />
</form>
Es ist script.php für Daten in der Datenbank
<?php
if(isset($_POST['submit']))
{
//connect to the database
$conn = mysql_connect('host', 'username', 'password', 'dbname') or die(mysql_error());
//insert results from the form input
$query = "INSERT INTO data(data1, data2) VALUES('$_POST[data1]', '$_POST[data2]')";
$result = mysql_query($conn, $query) or die(mysql_error());
}
?>
eingefügt, aber es wird alle Daten aus dem Formular zur Datenbank einzufügen. Wie kann ich verhindern, Daten in die Datenbank einzufügen, wenn data1 bereits existiert?
existieren können Sie Spalten machen 'unique' in Ihrer DB – Naruto
Wenn er es einzigartig und versucht macht Um die Abfrage wie geschrieben auszuführen, wird ein Fehler ausgegeben. Nun, vielleicht ist das in Ordnung, aber der beste Weg, damit umzugehen, wäre, die Spalte nicht nur eindeutig zu machen, sondern auch nach der Existenz von data1 in der Tabelle zu suchen. Wenn sie nicht vorhanden ist, führe die Einfügeabfrage aus. –
Oder Sie könnten tun, was Naruto vorgeschlagen und auch eine nicht veraltete mysql API verwenden und Ihre Insert in einen try/catch-Block wickeln. Auf diese Weise müssen Sie nicht zwei Abfragen durchführen. – Mike