>> PHP入門トップに戻る

PDO delete文実行

今回はPDOでdelete文を実行する方法について説明します。
以下のようなテーブルを準備してください。
mysql> select * from test;
+----+------+------+
| id | num  | name |
+----+------+------+
|  1 |    1 | AAA  |
|  2 |   10 | BBB  |
|  3 |  100 | CCC  |
|  4 | 1000 | DDD  |
+----+------+------+
まずはプリペアドステートメントを使った方法です。
プリペアドステートメントについては「PDO プリペアドステートメント」を参照してください。

基本的にはselect文を実行する時と一緒で以下の様な流れになります。
PDOオブジェクトの作成

prepareメソッドでSQL文をセット

bindValue or bindParamでパラメータに値をセット

executeメソッドでクエリを実行
以下のコードを見てください。
	//PDOオブジェクトの生成
	$pdo = new PDO("mysql:dbname=test;host=localhost",USERNAME,PASSWORD);
	
	//prepareメソッドでSQLをセット
	$stmt = $pdo->prepare("delete from test where id = ?");
	
	//bindValueメソッドでパラメータをセット
	$stmt->bindValue(1,5);
	
	//executeでクエリを実行。
	$stmt->execute();
特に難しくはないと思います。
executeメソッドの戻り値はクエリが成功するとTRUE、失敗するとFALSEが返るのでこれでエラーチェックが出来ます。

execメソッドでdelete文実行

次にPDOオブジェクトのexecメソッドでdelete文を実行してみましょう。
以下のコードを見てください。
	//PDOオブジェクトの生成
	$pdo = new PDO("mysql:dbname=test;host=localhost",USERNAME,PASSWORD);
	
	//execメソッドでクエリを実行。execメソッドでdelete文を実行した場合は削除件数が返る。
	$count = $pdo->exec("delete from test where id = 5");
	
	echo "{$count}件データを削除しました。".PHP_EOL;
execメソッドでdelete文を実行すると削除件数が戻り値として返って来ます。
この値をチェックすることで削除件数を表示したり、条件分岐させたりできるので覚えておきましょう。

execメソッドはただ引数のクエリを実行するだけですので、エスケープ処理等がされていません。
ユーザ入力値などをSQL内で使用している場合は、1つ目のプリペアドステートメントを利用した方法を使いましょう。

>> 【PDO update文実行】に進む
>> PHP入門トップに戻る