Ik heb nu dit:
<?php
$query = ("INSERT INTO tabel (id, naam) VALUES ('".$id."', '".$naam."')");
$res = mysql_query($query) or die(mysql_error('Er is een fout opgetreden'));
if (mysql_errno($res) == 1062) {
die ('Dit id is al bezet');
} else {
echo is toegevoegd';
}
?>
Maar hij doet het nog niet helemaal :$
<?php
$sql = "SELECT * FROM tabel WHERE naam = '" . $naam . "'";
$res = mysql_query($sql);
if(mysql_num_rows($res) >= 1) {
print 'Dit id is al bezet';
} else {
$sql = "INSERT INTO tabel (id, naam) VALUES ('" . $id . "', '" . $naam . "')";
$res = mysql_query($sql);
}
?>
Zo doe ik het ongeveer: je kijkt eerst of er al een waarde is met dezelfde naam. Als die waarde er is (mysql_num_rows is dan groter of gelijk aan 1), krijg je een melding dat die naam al bestaat. Anders voegt hij hem toe.
@Kasper: Dat is leuk en aardig, maar er bestaat een miniscule kans dat er tussen query 1 en query 2 reeds in een insert wordt gedaan. Dan komt het resultaat van de eerste query dus niet overeen met de werkelijkheid en zal query 2 fout gaan. En omdat je geen foutafhandeling gebruikt (doodzonde nummer 1), heb je een probleem.
De genoemde oplossing van Arjan is vele malen beter. Jouw oplossing heeft de kans dat het fout gaat.