sql >> Database >  >> RDS >> Mysql

Opgemaakte verklaring met ON DUPLICATE KEY

De eenvoudigste manier om INSERT...ON DUPLICATE KEY UPDATE te gebruiken, is door de VALUES-component op de volgende manier te gebruiken, zodat u de parameters in de UPDATE-component niet hoeft te herhalen. Ze gebruiken gewoon dezelfde waarden voor elke kolom die je hebt doorgegeven in de VALUES-component:

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();
}

De IODKU-syntaxis vereist dat u elke kolom afzonderlijk instelt. Je kunt ze niet allemaal in één clausule opsommen zoals je probeerde te doen.

U moet altijd eventuele fouten rapporteren van elke aanroep naar prepare() of execute(). Of u kunt mysqli-uitzonderingen maken:

$mysqli -> report_mode = MYSQLI_REPORT_STRICT;

U hoeft ook niet bind_result() te gebruiken, aangezien er geen resultaat is ingesteld voor INSERT:

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


  1. Voorbeelden van het converteren van 'time' naar 'datetime' in SQL Server (T-SQL)

  2. Hoe NULL retourneren als het resultaat leeg is?

  3. Hoe kan ik vinden welke tabellen verwijzen naar een bepaalde tabel in Oracle SQL Developer?

  4. Tips voor het repareren van SQL Server-indexfragmentatie