ここにはかなりの問題があります。
MySQLキーワードlist
を使用しています 関数として、それだけで問題が発生します。
補足:はい、それは「予約語」ではなく、「キーワード」であり、MySQLは関数として使用される場合、キーワードを特別に扱います。これは、2番目のクエリで実行していることです。 、およびMySQLがそれを次のように解釈する方法です。テーブル宣言名ではなく関数。
そのテーブルの名前をリストに変更するか、目盛りで囲むことをお勧めします。
また、混合しないMySQLAPI/関数を混合しています。
したがって、新しいコードは、
$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)){...}
最終的に、データベースに重複するエントリがないことを確認するために、UNIQUE制約を設定できます。