Тук има доста грешни неща.
Използвате MySQL ключова дума list
като функция и само това ще ви създаде проблеми.
Странична бележка:Да, знам, че това не е "резервирана" дума, това е "ключова дума" и MySQL третира ключовите думи специално, ако се използват като функция, което правите сега във втората си заявка , и е начинът, по който MySQL го интерпретира като; функция, а не име на декларация на таблица.
Предлагам ви да преименувате тази таблица на списъци или да я увиете в отметки.
Вие също така смесвате MySQL API/функции, които не се смесват.
Така че новият ви код ще се чете като,
докато пуска $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);
Вашият код също е отворен за SQL инжекция. Използвайте подготвено изявление.
Сега нямаме представа откъде идват всичките ви променливи.
Използвайте отчитане на грешки.
Също така ви предлагам да използвате условен empty()
за вашите променливи/входни данни.
В противен случай може да получите и други грешки, от които MySQL може да се оплаче.
Т.е.:
if(!empty($var)){...}
В крайна сметка и за да сте сигурни, че няма дублиращи се записи във вашата база данни, можете да зададете УНИКАЛНО ограничение.