इसे आजमाएं:
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
SELECT ?, ?, ?, ? FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM wifi
WHERE ssid=? AND name=? AND surname=?)";
DUAL
एक डमी टेबल नाम है जिसका उपयोग आप तब कर सकते हैं जब आपको किसी वास्तविक तालिका तक पहुंचने की आवश्यकता नहीं होती है। प्लेसहोल्डर्स को मुख्य SELECT
. में रखना ऐसा लगता है कि सबक्वेरी के बजाय प्लेसहोल्डर समस्या से बचा जा सकता है।
दूसरा तरीका यह है कि आप उन स्तंभों पर एक अद्वितीय अनुक्रमणिका बनाकर ऐसा कर सकते हैं:
CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);
तब आप इसका उपयोग कर सकते हैं:
$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)";
यदि आप पासवर्ड को अपडेट करना चाहते हैं यदि यह पहले से मौजूद है, तो ON DUPLICATE KEY UPDATE
का उपयोग करें INSERT IGNORE
. के बजाय :
$SQL = "INSERT INTO wifi (ssid, password, name, surname)
VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE password = VALUES(password)";