PDO::exec
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)
PDO::exec — SQL ステートメントを実行し、作用した行数を返す
説明
public PDO::exec
( string $statement
) : int
PDO::exec() は、一度の関数コールで SQL 文を実行し、文によって作用した行数を返します。
PDO::exec() は SELECT 文からは結果を返しません。 プログラム中で一度だけ発行が必要になる SELECT 文に対しては、 PDO::query() の発行を検討してください。 複数回発行が必要な文については、PDO::prepare() による PDOStatement オブジェクトの準備と PDOStatement::execute() による文の発行を行ってください。
返り値
PDO::exec() は、発行した SQL
ステートメントによって更新もしくは
削除された行数を返します。
1 行も作用しなかった場合、PDO::exec() は
0
を返します。
警告
この関数は論理値
false
を返す可能性がありますが、false
として評価される値を返す可能性もあります。
詳細については 論理値の
セクションを参照してください。この関数の返り値を調べるには
===演算子 を
使用してください。
以下の例は PDO::exec() の戻り値の使用法を間違っています。結果として一行も更新されなかった場合に die() がコールされてしまうからです。
<?php$db->exec() or die(print_r($db->errorInfo(), true)); // 間違っている?>
例
例1 DELETE 文の発行
WHERE 句を伴う DELETE 文によって削除された行数をカウントします。
<?php$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');/* FRUIT テーブルから全ての行を削除する */$count = $dbh->exec("DELETE FROM fruit");/* 削除された行数を返す */print("Deleted $count rows.\n");?>
上の例の出力は以下となります。
Deleted 1 rows.
参考
- PDO::prepare() - 文を実行する準備を行い、文オブジェクトを返す
- PDO::query() - SQL ステートメントを実行し、結果セットを PDOStatement オブジェクトとして返す
- PDOStatement::execute() - プリペアドステートメントを実行する