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

Permintaan mysqli php kompleks untuk memasukkan data jika tidak ada:mendapatkan nama kolom Duplikat '?'

Coba ini:

$SQL = "INSERT INTO wifi (ssid, password, name, surname) 
        SELECT ?, ?, ?, ? FROM DUAL 
        WHERE NOT EXISTS (
            SELECT *
            FROM wifi 
            WHERE ssid=? AND name=? AND surname=?)";

DUAL adalah nama tabel dummy yang dapat Anda gunakan saat Anda tidak perlu mengakses tabel yang sebenarnya. Menempatkan placeholder di SELECT utama daripada subquery tampaknya menghindari masalah placeholder.

Cara lain yang dapat Anda lakukan adalah dengan membuat indeks unik pada kolom tersebut:

CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);

Kemudian Anda dapat menggunakan:

$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
        VALUES (?, ?, ?, ?)";

Jika Anda ingin memperbarui kata sandi jika sudah ada, gunakan ON DUPLICATE KEY UPDATE alih-alih INSERT IGNORE :

$SQL = "INSERT INTO wifi (ssid, password, name, surname)
        VALUES (?, ?, ?, ?)
        ON DUPLICATE KEY UPDATE password = VALUES(password)";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masukkan kecepatan di mysql vs cassandra

  2. mysql:Bagaimana saya bisa menghapus karakter di awal atau akhir bidang?

  3. DO dan DONT untuk Indeks

  4. MySQL DATEDIFF() vs TIMESTAMPDIFF():Apa Bedanya?

  5. Hitung baris tabel