Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

यदि मौजूद नहीं है तो डेटा सम्मिलित करने के लिए जटिल php mysqli क्वेरी:डुप्लिकेट कॉलम नाम प्राप्त करना '?'

इसे आजमाएं:

$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)";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीडीओ प्रारंभ करते समय - क्या मुझे यह करना चाहिए:वर्णसेट =यूटीएफ 8 या वर्णसेट =यूटीएफ 8 एमबी 4?

  2. PHP एसक्यूएल एसटीएमटी एकाधिक पसंद का चयन करें? क्या यह संभव है?

  3. MySQL और PostgreSQL के लिए HAProxy सांख्यिकी को समझना

  4. MySQLdb के माध्यम से फ़ंक्शन बनाएं

  5. MySQL प्रदर्शन धोखा पत्र