Mysql
 sql >> база данни >  >> RDS >> Mysql

Подготвена декларация с НА ДУБЛИКАТ КЛЮЧ

Най-лесният начин да използвате INSERT...ON DUPLICATE KEY UPDATE е да използвате клаузата VALUES по следния начин, така че не е необходимо да повтаряте параметрите в клаузата UPDATE. Те просто използват едни и същи стойности за всяка колона, която сте предали в клаузата 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();
}

Синтаксисът на IODKU изисква да задавате всяка колона поотделно. Не можете да ги изброите всички в една клауза, както се опитвахте да направите.

Винаги трябва да съобщавате за грешки от всяко извикване на подготви () или execute(). Или можете да накарате mysqli да хвърля изключения:

$mysqli -> report_mode = MYSQLI_REPORT_STRICT;

Също така, не е необходимо да bind_result(), тъй като няма набор от резултати от 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. Подходи за разделяне на MySQL?

  2. PHP/PDO вмъкване на текуща дата плюс един месец в MYSQL

  3. Изпълнете PDO с масив, съдържащ нулеви стойности

  4. ИЗПУСКАНЕ НА БАЗА ДАННИ MySQL

  5. Не мога да се свържа с локален MySQL сървър чрез socket homebrew