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)";