Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Złożone zapytanie php mysqli do wstawiania danych, jeśli nie istnieją:uzyskiwanie zduplikowanej nazwy kolumny '?'

Spróbuj tego:

$SQL = "INSERT INTO wifi (ssid, password, name, surname) 
        SELECT ?, ?, ?, ? FROM DUAL 
        WHERE NOT EXISTS (
            SELECT *
            FROM wifi 
            WHERE ssid=? AND name=? AND surname=?)";

DUAL to fikcyjna nazwa tabeli, której możesz użyć, gdy nie potrzebujesz dostępu do rzeczywistej tabeli. Umieszczanie symboli zastępczych w głównym SELECT zamiast podzapytania wydaje się, że unika się problemu z symbolami zastępczymi.

Innym sposobem, aby to zrobić, jest utworzenie unikalnego indeksu dla tych kolumn:

CREATE UNIQUE INDEX ssid_name_surname ON wifi (ssid, name, surname);

Następnie możesz użyć:

$SQL = "INSERT IGNORE INTO wifi (ssid, password, name, surname)
        VALUES (?, ?, ?, ?)";

Jeśli chcesz zaktualizować hasło, jeśli już istnieje, użyj ON DUPLICATE KEY UPDATE zamiast 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. Pojedyncza instrukcja MySQL do połączenia dwóch tabel

  2. Entity Framework tworzy nazwę tabeli w liczbie mnogiej, ale widok oczekuje nazwy tabeli w liczbie pojedynczej?

  3. Jakie jest najlepsze zestawienie MySQL dla języka niemieckiego?

  4. MySQL - SUMA grupy różnic czasowych

  5. Warunkowe zapytanie agregujące z grupą według