Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Sepertinya saya tidak dapat Mencegah input Nama Duplikat

Ada beberapa hal yang salah di sini.

Anda menggunakan kata kunci MySQL list sebagai fungsi, dan itu saja akan menyebabkan masalah bagi Anda.

Sidenote:Ya, saya tahu itu bukan kata "cadangan", ini adalah "kata kunci" dan MySQL memperlakukan kata kunci secara khusus jika digunakan sebagai suatu fungsi, yang sedang Anda lakukan sekarang dalam kueri kedua Anda , dan merupakan cara MySQL menafsirkannya sebagai; fungsi daripada nama deklarasi tabel.

Saya sarankan Anda mengganti nama tabel itu menjadi daftar, atau membungkusnya dengan tanda centang.

Anda juga mencampur API/fungsi MySQL yang tidak bercampur.

Jadi kode baru Anda akan terbaca sebagai,
sambil menjatuhkan $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);

Kode Anda juga terbuka untuk injeksi SQL. Gunakan pernyataan yang sudah disiapkan.

Sekarang, kami tidak tahu dari mana semua variabel Anda berasal.

Gunakan pelaporan kesalahan.

Saya juga menyarankan Anda menggunakan empty() bersyarat untuk variabel/input Anda.

Jika tidak, Anda mungkin juga mendapatkan kesalahan lain yang mungkin dikeluhkan oleh MySQL.

yaitu:

if(!empty($var)){...}

Pada akhirnya dan untuk memastikan tidak ada entri duplikat di database Anda, Anda dapat menetapkan batasan UNIK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO MySQL query SEPERTI -> beberapa kata kunci

  2. Menggunakan variabel dalam mengatur nilai tabel mysql INNODB AUTO_INCREMENT

  3. Hasil autoload mengambil hasil yang sama berulang-ulang

  4. MySQL errorno 121

  5. JPA Hibernate - penghapusan berjenjang di database dan anotasi