Zkuste toto:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
SELECT ?, ?, ?, ? FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM wifi
WHERE ssid=? AND name=? AND surname=?)";
DUAL
je fiktivní název tabulky, který můžete použít, když nepotřebujete přistupovat ke skutečné tabulce. Umístění zástupných symbolů do hlavního SELECT
spíše než poddotaz se zdá, že se vyhnete problému se zástupným symbolem.
Druhým způsobem, jak to udělat, je vytvoření jedinečného indexu pro tyto sloupce:
CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);
Pak můžete použít:
$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)";
Pokud chcete aktualizovat heslo, pokud již existuje, použijte ON DUPLICATE KEY UPDATE
místo INSERT IGNORE
:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password = VALUES(password)";