Der er en del ting galt her.
Du bruger et MySQL søgeord list
som en funktion, og det alene vil give dig problemer.
Sidenote:Ja, jeg ved, at det ikke er et "reserveret" ord, det er et "søgeord", og MySQL behandler søgeord specielt, hvis de bruges som en funktion, hvilket er det, du gør nu i din anden forespørgsel , og er den måde, MySQL tolker det som; en funktion i stedet for et tabeldeklarationsnavn.
Jeg foreslår, at du omdøber den tabel til lister eller pakker den ind i flueben.
Du blander også MySQL API'er/funktioner, der ikke blandes sammen.
Så din nye kode ville læse som,
mens du dropper $selected = mysql_connect('christmas', $dbhandle);
$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);
Din kode er også åben for en SQL-injektion. Brug en forberedt erklæring.
Nu har vi ingen idé om, hvor alle dine variabler kommer fra.
Brug fejlrapportering.
Jeg foreslår også, at du bruger en betinget empty()
for dine variabler/input.
Ellers kan du også få andre fejl, som MySQL kan klage over.
Dvs.:
if(!empty($var)){...}
I sidste ende og for at sikre dig, at der ikke er duplikerede poster i din database, kan du indstille en UNIK begrænsning.