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

Przygotowane oświadczenie z ON DUPLICATE KEY

Najłatwiejszym sposobem użycia INSERT...ON DUPLICATE KEY UPDATE jest użycie klauzuli VALUES w następujący sposób, dzięki czemu nie trzeba powtarzać parametrów w klauzuli UPDATE. Po prostu używają tych samych wartości dla każdej kolumny, którą przekazałeś w klauzuli VALUES:

if($stmt = $mysqli -> prepare("
    INSERT INTO user_info (city, state, website, public_contact, 
        user, zipcode, pic, emailme)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?) 
    ON DUPLICATE KEY UPDATE
        city = VALUES(city),
        state = VALUES(state),
        website = VALUES(website),
        public_contact = VALUES(public_contact),
        user = VALUES(user),
        zipcode = VALUES(zipcode),
        pic = VALUES(pic),
        emailme = VALUES(emailme)") {
    $stmt -> bind_param("sssssssi",$city, $state, $website, $public_contact, 
        $user, $zipcode, $pic, $emailme);
    $stmt -> execute();
    $stmt -> close();
}

Składnia IODKU wymaga indywidualnego ustawienia każdej kolumny. Nie możesz wymienić ich wszystkich w jednej klauzuli, tak jak próbowałeś to zrobić.

Powinieneś zawsze zgłaszać wszelkie błędy z dowolnego wywołania metody Prepare() lub execute(). Lub możesz sprawić, że mysqli wyrzuci wyjątki:

$mysqli -> report_mode = MYSQLI_REPORT_STRICT;

Ponadto nie musisz wykonywać bind_result(), ponieważ nie ma zestawu wyników z INSERT:

// NO: $stmt -> bind_result($result);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT IGNORE używając Laravel's Fluent

  2. Tworzenie zestawu MySQL SET z ciągu znaków

  3. Jak przenieść model między dwiema aplikacjami Django (Django 1.7)

  4. Oświadczenie przygotowane w języku Java nie jest wykonywane

  5. SQLAlchemy NA AKTUALIZACJI ZDUPLIKOWANEGO KLUCZA