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. Как да покажа изображение от база данни с помощта на php

  2. Как да конвертирате грешно кодирани данни в UTF-8?

  3. Проблем с извеждането на арабски текст в php mysql utf-8

  4. Mysql превръща ' в ’?

  5. Python MySql Insert не работи