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

# PDO::exec

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

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

### 説明

public function PDO::exec(string `$statement`): int|false

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

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

### パラメータ

`statement`

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

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

### 戻り値

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

警告

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

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

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

### エラー / 例外

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

`PDO::ATTR_ERRMODE` が `PDO::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() - プレースホルダを指定せずに、SQL ステートメントを準備して実行する
- PDOStatement::execute() - プリペアドステートメントを実行する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open