sql >> データベース >  >> RDS >> Mysql

ONDUPLICATEKEYを使用したプリペアドステートメント

    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構文では、各列を個別に設定する必要があります。あなたがやろうとしていたように、それらすべてを1つの句にリストすることはできません。

    prepare()またはexecute()の呼び出しからのエラーは、常に報告する必要があります。または、mysqliに例外をスローさせることができます:

    $mysqli -> report_mode = MYSQLI_REPORT_STRICT;
    

    また、INSERT:

    からの結果セットがないため、bind_result()を実行する必要はありません。
    // NO: $stmt -> bind_result($result);
    


    1. MySQLをMariaDB10にアップグレードします(パート2 – MariaDB / MySQL 5.5をバージョン10.0にアップグレードします)

    2. TimescaleDBのパフォーマンス監視

    3. SQLServerトランザクションレプリケーションの構成

    4. 接続できませんでした:「初期通信パケットの読み取り」でMySQLサーバーへの接続が失われました、システムエラー:0