Versuchen Sie Folgendes:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
SELECT ?, ?, ?, ? FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM wifi
WHERE ssid=? AND name=? AND surname=?)";
DUAL
ist ein Dummy-Tabellenname, den Sie verwenden können, wenn Sie nicht auf eine tatsächliche Tabelle zugreifen müssen. Setzen der Platzhalter in das Haupt-SELECT
statt einer Unterabfrage scheint das Platzhalterproblem zu vermeiden.
Sie können dies auch tun, indem Sie einen eindeutigen Index für diese Spalten erstellen:
CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);
Dann können Sie verwenden:
$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)";
Wenn Sie das Passwort aktualisieren möchten, falls es bereits vorhanden ist, verwenden Sie ON DUPLICATE KEY UPDATE
statt INSERT IGNORE
:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password = VALUES(password)";