Probeer dit:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
SELECT ?, ?, ?, ? FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM wifi
WHERE ssid=? AND name=? AND surname=?)";
DUAL
is een dummy-tabelnaam die u kunt gebruiken als u geen echte tabel hoeft te openen. Plaatsaanduidingen in de hoofdmap plaatsen SELECT
in plaats van een subquery lijkt het probleem met de tijdelijke aanduiding te vermijden.
De andere manier waarop u dit kunt doen, is door een unieke index op die kolommen te maken:
CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);
Dan kunt u het volgende gebruiken:
$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)";
Als u het wachtwoord wilt bijwerken als het al bestaat, gebruik dan ON DUPLICATE KEY UPDATE
in plaats van INSERT IGNORE
:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password = VALUES(password)";