レシピ
データベース PDO
PDOでデータを削除(DELETE)
今回はデータベースの基本操作である生成(INSERT)、参照(SELECT)、更新(UPDATE)、削除(DELETE)のうち、PDOで削除(DELETE)を行う方法です。MySQL、PostgreSQL、SQLiteの3種類のデータベースを使って解説します。
この記事のポイント
- データベースに登録されたデータを削除する
- データベースのデータを削除する基本的なSQLを確認する
目次
PDOを使ってデータを削除する
今回はデータベースに登録されたデータを削除する方法について解説します。
前提として、全てのデータベースには「test」データベースがあり、次の構造を持ったテーブルがあることとします。
カラム名 | 型 | その他 |
---|---|---|
id | 整数 | 主キー |
name | 文字列 | |
age | 整数 | |
registry_datetime | 日付(またはタイムスタンプ、文字列) |
PDO自体の基本的な内容については「PDOについて」を、データベースへの接続方法については「PDOを使ってデータベースへ接続」をご覧ください。
データを削除する流れを確認
これから3種類のデータベースにあるデータをそれぞれ更新していきますが、今回は基本的なSQLのみ扱うため、全て同じSQL文が適用できます。
そこでまずは、データ更新の部分のみ確認しておきましょう。
データを取得するコード例
// SQL文を作成
$sql = "DELETE FROM user_list WHERE id = 3";
// クエリ実行(データを取得)
$res = $dbh->query($sql);
上記SQLを実行するとuser_listテーブルにあるWHERE句で指定したデータが削除されます。
SQLの実行が成功するとPDOStatementオブジェクト、それ以外の場合は論理値のfalseが$resに入ります。
文法エラーがなくSQLが実行されればPDOStatementオブジェクトが返ってくる点に注意してください。
例えばテーブルにそもそもデータが入っていなかったり、条件にあうデータがなく削除できなかった場合についても、文法エラーではないため返り値はPDOStatementオブジェクトです。
削除する流れを確認したところで、続いてそれぞれのデータベース別にデータの削除を行なっていきましょう。
MySQLでデータを削除する
まずはMySQLからデータの削除を行います。
操作前のテーブルには次のデータが入っています。
操作前のテーブル
ここでは、idが3であるテスト太郎さんのデータを削除します。
先ほどのデータを削除するコードを使い、データベースの接続からコードにしていきます。
データベースの接続と解除、処理をtry文で囲む部分については「PDOを使ってデータベースへ接続」で使ったものをそのまま使っています。
コード例
<?php
// 変数の初期化
$sql = null;
$res = null;
$dbh = null;
try {
// DBへ接続
$dbh = new PDO("mysql:host=127.0.0.1; dbname=test; charset=utf8", 'username', 'password');
// SQL作成
$sql = "DELETE FROM user_list WHERE id = 3";
// SQL実行
$res = $dbh->query($sql);
} catch(PDOException $e) {
echo $e->getMessage();
die();
}
// 接続を閉じる
$dbh = null;
削除が成功すると、テーブルの内容は次のようになります。
操作後のテーブル
テスト太郎のデータがテーブルから削除されました。
以上、MySQLでのデータ削除でした。
PostgreSQLでデータを削除する
続いて、PostgreSQLでデータ削除を行います。
基本的なコードは上記MySQLと同様です。
操作前のテーブル
今回はidに3を持つテスト四郎さんのデータを削除します。
コード例
<?php
// 変数の初期化
$sql = null;
$res = null;
$dbh = null;
try {
// DBへ接続
$dbh = new PDO("pgsql:host=127.0.0.1; dbname=test;", 'username', 'password');
// SQL作成
$sql = "DELETE FROM user_list WHERE id = 3";
// SQL実行
$res = $dbh->query($sql);
} catch(PDOException $e) {
echo $e->getMessage();
die();
}
// 接続を閉じる
$dbh = null;
操作後のテーブル
テスト四郎さんのデータがテーブルから削除されました。
以上、PostgreSQLでのデータ削除でした。
SQLiteでデータを削除する
最後にSQLiteでデータの削除を行います。
全体の流れは上記2つのデータベースと同じ内容です。
操作前のテーブル
ここでは、idが3のテスト健太さんのデータを削除していきます。
コード例
<?php
// 変数の初期化
$sql = null;
$res = null;
$dbh = null;
try {
// DBへ接続
$dbh = new PDO("sqlite:./sqlite/test.sqlite3");
// SQL作成
$sql = "DELETE FROM user_list WHERE id = 3";
// SQL実行
$res = $dbh->query($sql);
} catch(PDOException $e) {
echo $e->getMessage();
die();
}
// 接続を閉じる
$dbh = null;
操作後のテーブル
テスト健太さんのデータがテーブルから削除されました。
以上、SQLiteでのデータ削除でした。
こちらの記事は役に立ちましたか?
ありがとうございます。
コメントを送信しました。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。