Jest tu kilka rzeczy nie tak.
Używasz słowa kluczowego MySQL list
jako funkcja, a samo to spowoduje problemy.
Uwaga dodatkowa:tak, wiem, że to nie jest słowo „zarezerwowane”, to „słowo kluczowe”, a MySQL traktuje słowa kluczowe specjalnie, jeśli są używane jako funkcja, i właśnie to robisz teraz w drugim zapytaniu , i jest sposobem, w jaki MySQL interpretuje to jako; funkcja, a nie nazwa deklaracji tabeli.
Proponuję zmienić nazwę tej tabeli na listy lub umieścić ją w kleszcze.
Mieszasz także API/funkcje MySQL, które się nie mieszają.
Twój nowy kod będzie wyglądał tak,
podczas upuszczania $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);
Twój kod jest również otwarty na wstrzyknięcie SQL. Użyj przygotowanego oświadczenia.
Teraz nie mamy pojęcia, skąd pochodzą wszystkie twoje zmienne.
Użyj raportowania błędów.
Proponuję również użyć warunkowego empty()
dla twoich zmiennych/wejść.
W przeciwnym razie możesz również otrzymać inne błędy, na które MySQL może narzekać.
Czyli:
if(!empty($var)){...}
Ostatecznie, aby upewnić się, że w Twojej bazie danych nie ma zduplikowanych wpisów, możesz ustawić UNIKALNE ograniczenie.