PHP-DB - 7. レコードの削除

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

<?php
$dsn = "sqlite:eldb.sqlite3";
$pdo = new PDO($dsn);

$sql = "delete from categories where id = 4";
$count = $pdo->exec($sql);
echo "Count: $count" . PHP_EOL;

delete 文を実行する場合も PDO クラスの exec メソッドを使います。

それではコマンドラインからプログラムを実行してみましょう。

$ php pdo5.php
Count: 1

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

参考:実行結果の確認

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

sqlite> select * from categories order by id;
id          title
----------  -----------
1           Programming
2           Design
3           Marketing

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

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

まとめ

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