PHP-DB - 6. レコードの更新

続いて update 文の実行方法について取り上げます。次のプログラム( pdo4.php )を作成します。

<?php
$dsn = "mysql:host=localhost;dbname=eldb;charset=utf8mb4";
$username = "root";
$password = "admin";
$pdo = new PDO($dsn, $username, $password);

$sql = "update categories set title = 'Camera' where id = 4";
$count = $pdo->exec($sql);
echo "Count: $count" . PHP_EOL;

update 文を実行する場合も、 insert 文を実行する場合と同様に PDO クラスの exec メソッドを使います。

それではターミナルからプログラムを実行してみましょう。

$ php pdo4.php
Count: 1

実行結果から update 文による更新件数である 1 が出力されているのがわかります。

参考:実行結果の確認

データベースのレコードが更新されているかどうかを確認してみましょう。 MySQL 上で categories テーブルのレコードを検索します。

MariaDB [eldb]> select * from categories order by id;
+----+-------------+
| id | title       |
+----+-------------+
|  1 | Programming |
|  2 | Design      |
|  3 | Marketing   |
|  4 | Camera      |
+----+-------------+
4 rows in set (0.00 sec)

MariaDB [eldb]> 

あるいは以前に作成したプログラム( pdo2.php )を実行しても良いでしょう。

$ php pdo2.php
1:Programming
2:Design
3:Marketing
4:Camera

まとめ

  • PDO インスタンスの exec メソッドによって update 文を実行する
  • exec メソッドは戻り値に更新件数を返却する
  • exec メソッドの戻り値にテーブルのレコードは含まれない点に注意する