Er zijn nogal wat dingen mis hier.
U gebruikt een MySQL-zoekwoord list
als een functie, en dat alleen al zal u problemen opleveren.
Sidenote:Ja, ik weet dat het geen "gereserveerd" woord is, het is een "trefwoord" en MySQL behandelt zoekwoorden speciaal als ze als een functie worden gebruikt, en dat is wat u nu doet in uw tweede zoekopdracht , en is de manier waarop MySQL het interpreteert als; een functie in plaats van een tabeldeclaratienaam.
Ik stel voor dat je die tabel hernoemt naar lijsten, of er vinkjes in zet.
Je mixt ook MySQL API's/functies die niet met elkaar vermengd zijn.
Dus je nieuwe code zou lezen als,
terwijl je $selected = mysql_connect('christmas', $dbhandle);
laat vallen
$query = mysqli_query($dbhandle, "SELECT * FROM `list` WHERE name='$name'")
or die (mysqli_error($dbhandle));
if(mysqli_num_rows($query) > 0){
echo 'that name already exists';
}else{
mysqli_query($dbhandle, "INSERT INTO `list` (name, one, two, three, four, five, six, seven, eight)
VALUES ('$name' , '$one' , '$two' , '$three' , '$four' , '$five' , '$six', '$seven' , '$eight')")
or die (mysqli_error($dbhandle));
}
mysqli_close($dbhandle);
Uw code staat ook open voor een SQL-injectie. Gebruik een voorbereide verklaring.
Nu hebben we geen idee waar al je variabelen vandaan komen.
Gebruik foutrapportage.
Ik raad u ook aan een voorwaardelijke empty()
. te gebruiken voor uw variabelen/invoer.
Anders kunt u ook andere fouten krijgen waarover MySQL kan klagen.
D.w.z.:
if(!empty($var)){...}
Om er zeker van te zijn dat er geen dubbele vermeldingen in uw database zijn, kunt u een UNIEKE beperking instellen.