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 ]); // 連想配列でバインド |
このように複数のバインドは連想配列でまとめて行うこともできます。
■まとめ
- UPDATE文もINSERT文とほとんど変わらない
- プリペアードステートメントのバインドは連想配列で行うこともできる