Há algumas coisas erradas aqui.
Você está usando uma palavra-chave MySQL
list
como uma função, e isso por si só lhe causará problemas. Nota lateral:Sim, eu sei que não é uma palavra "reservada", é uma "palavra-chave" e o MySQL trata as palavras-chave especialmente se usadas como uma função, que é o que você está fazendo agora na sua segunda consulta , e é a maneira que o MySQL está interpretando; uma função em vez de um nome de declaração de tabela.
Sugiro que você renomeie essa tabela para listas ou a envolva em ticks.
Você também está misturando APIs/funções do MySQL que não se misturam.
Portanto, seu novo código seria lido como
ao descartar
$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);
Seu código também está aberto a uma injeção de SQL. Use uma declaração preparada.
Agora, não temos ideia de onde todas as suas variáveis estão vindo.
Use o relatório de erros.
Também sugiro que você use um
empty()
condicional para suas variáveis/entradas. Caso contrário, você também pode obter outros erros dos quais o MySQL pode reclamar.
Ou seja:
if(!empty($var)){...}
Por fim e para garantir que não haja entradas duplicadas em seu banco de dados, você pode definir uma restrição UNIQUE.