sql >> Database teknologi >  >> RDS >> Mysql

Udarbejdet erklæring med ON DUPLICATE KEY

Den nemmeste måde at bruge INSERT...ON DUPLICATE KEY UPDATE på er at bruge VALUES-sætningen på følgende måde, så du ikke behøver at gentage parametrene i UPDATE-sætningen. De bruger bare de samme værdier for hver kolonne, som du sendte i VALUES-sætningen:

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-syntaksen kræver, at du indstiller hver kolonne individuelt. Du kan ikke liste dem alle i én klausul, som du prøvede at gøre.

Du bør altid rapportere eventuelle fejl fra ethvert kald til prepare() eller execute(). Eller du kan få mysqli til at kaste undtagelser:

$mysqli -> report_mode = MYSQLI_REPORT_STRICT;

Du behøver heller ikke binde_result(), da der ikke er noget resultatsæt fra INSERT:

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


  1. Indtastningstype tekstfelt giver rettet fejl 2147483647

  2. SQL Server - find n'te forekomst i en streng

  3. Sådan opretter du en tabel i SQL Server

  4. Sådan implementeres prioriteter i SQL (postgres)