Tady je docela dost věcí špatně.
Používáte klíčové slovo MySQL list
jako funkce, a to samo o sobě vám způsobí problémy.
Vedlejší poznámka:Ano, vím, že to není „rezervované“ slovo, je to „klíčové slovo“ a MySQL zachází s klíčovými slovy speciálně, pokud jsou použita jako funkce, což je to, co nyní děláte ve svém druhém dotazu , a je to způsob, jakým to MySQL interpretuje jako; funkci spíše než název deklarace tabulky.
Navrhuji, abyste tuto tabulku přejmenovali na seznamy nebo ji zalomili čárkami.
Také mícháte MySQL API/funkce, které se nemíchají.
Váš nový kód by se tedy četl jako,
při vypouštění $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);
Váš kód je také otevřený pro SQL injekci. Použijte připravený výpis.
Nyní nemáme ponětí, odkud všechny vaše proměnné pocházejí.
Použijte hlášení chyb.
Také doporučuji použít podmíněné empty()
pro vaše proměnné/vstupy.
V opačném případě můžete také získat další chyby, na které si může MySQL stěžovat.
T.j.:
if(!empty($var)){...}
Abyste se ujistili, že ve vaší databázi nejsou žádné duplicitní položky, můžete nastavit UNIKÁTNÍ omezení.