Tente isto:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
SELECT ?, ?, ?, ? FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM wifi
WHERE ssid=? AND name=? AND surname=?)";
DUAL
é um nome de tabela fictício que você pode usar quando não precisar acessar uma tabela real. Colocando os espaços reservados no SELECT
principal em vez de uma subconsulta parece evitar o problema do espaço reservado. A outra maneira de fazer isso é criando um índice exclusivo nessas colunas:
CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);
Então você pode usar:
$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)";
Se você quiser atualizar a senha se ela já existir, use
ON DUPLICATE KEY UPDATE
em vez de INSERT IGNORE
:$SQL = "INSERT INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password = VALUES(password)";