PDO::exec

SQL ステートメントを実行し、作用した行数を返す

説明

public intfalse PDO::exec(string $statement)

PDO::exec は、一度の関数コールで SQL 文を実行し、文によって作用した行数を返します。

PDO::exec は SELECT 文からは結果を返しません。 プログラム中で一度だけ発行が必要になる SELECT 文に対しては、 PDO::query の発行を検討してください。 複数回発行が必要な文については、 PDO::prepare による PDOStatement オブジェクトの準備と PDOStatement::execute による文の発行を行ってください。

パラメータ

statement

準備、実行する SQL ステートメントを指定します。

クエリ内のデータは 適切にエスケープ する必要があります。

戻り値

PDO::exec は、発行した SQL ステートメントによって更新もしくは 削除された行数を返します。 1 行も作用しなかった場合、 PDO::exec0 を返します。

警告

この関数は論理値 false を返す可能性がありますが、false として評価される値を返す可能性もあります。 詳細については 論理値の セクションを参照してください。この関数の返り値を調べるには ===演算子 を 使用してください。

以下の例は PDO::exec の戻り値の使用法を間違っています。結果として一行も更新されなかった場合に die がコールされてしまうからです。

<?php
$db->exec() or die(print_r($db->errorInfo(), true)); // 間違っている
?>

エラー / 例外

PDO::ATTR_ERRMODEPDO::ERRMODE_WARNING に設定されていた場合、E_WARNING レベルのエラーが発生します。

PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION に設定されていた場合、PDOException がスローされます。

例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
  • PDOStatement::execute