Developer

【PHP応用】PDO⑨ UPDATE文
2021.08.31
Lv2

【PHP応用】PDO⑨ UPDATE文

PDO⑨ UPDATE文

今回はUPDATE文です。PDOにおける使い方はINSERT文とほとんど同じです。
違いは発行するSQLくらいです。
その違いを説明するだけでは面白くないので、今回はプリペアードステートメントのバインド変数を連想配列で渡してみます。

■プログラム

idが1のレコードの住所を大阪に変更してみます。
現在の値は以下のようになっています。

pdo_update.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
    try {
 
        // 接続処理
        $dsn = 'mysql:host=localhost;dbname=sample_db';
        $user = 'root';
        $password = '';
        $dbh = new PDO($dsn, $user, $password);
 
        // SELECT文を発行
 
        $id = 1; // updateするレコードのID
        $address = "大阪"; // 指定したIDのaddressカラムの値を大阪に変更
 
        $sql = "UPDATE members SET address = :address WHERE id = :id";
        $stmt = $dbh->prepare($sql);
 
        $stmt->execute([":address" => $address, ":id" => $id]); // 連想配列でバインド
 
        print("レコードを更新しました");
 
        // 接続切断
        $dbh = null;
         
 
    } catch (PDOException $e) {
        print $e->getMessage() . "<br/>";
        die();
    }
?>

プログラム実行後

■解説

基本的には15行目のSQLがUPDATE文になっているだけです。

1
$sql = "UPDATE members SET address = :address WHERE id = :id";

ですが今回はプリペアードステートメントのバインドを連想配列で行っています。(18行目)

1
$stmt->execute([":address" => $address, ":id" => $id]); // 連想配列でバインド

このように複数のバインドは連想配列でまとめて行うこともできます。

■まとめ