クエリを実行する

# pg_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_query — クエリを実行する

### 説明

function pg_query(PgSql\Connection `$connection` = ?, string `$query`): PgSql\Result|false

pg_query() は、指定したデータベース `connection` 上で `query` を実行します。 特別な理由がない限り、この関数よりも pg_query_params() を使うほうがいいでしょう。

エラーが発生して `false` が返された場合、もし接続が正常なら pg_last_error() 関数を使用してエラーの詳細情報が 取得可能です。

> 注意: `connection`は省略可能ですが、それは推奨されません。 なぜならスクリプトのバグが発見しにくくなるためです。

> 注意:

> この関数は、以前は pg_exec() と呼ばれていました。 pg_exec() は互換性確保のためにまだ使用可能ですが、 新しい名前を使用することが推奨されています。

### パラメータ

`connection`

  PgSql\Connection クラスのインスタンス。 `connection` が指定されない場合は、デフォルトの接続を使います。 デフォルトの接続とは、pg_connect() または pg_pconnect() によって確立された直近の接続です。

  警告

  PHP 8.1.0 以降では、デフォルトの接続を使うことは推奨されなくなりました。

`query`

  実行する 1 つまたは複数の SQL 文。複数の文が関数に渡された場合は、 明示的に BEGIN/COMMIT コマンドを指定していない限りはそれらの文は ひとつのトランザクションとして実行されます。しかし、1 回のコールで 複数のトランザクションを実行することは推奨されません。

  警告

  ユーザーから受け取ったデータを文字列に直接組み込むのは危険で、SQL インジェクション の脆弱性を引き起こしがちです。クエリ文字列に直接埋め込むのではなく、 pg_query_params() を使ってパラメータとして指定することを推奨します。

  ユーザーから受け取ったデータをクエリ文字列に直接埋め込む場合は、 適切にエスケープ する必要があります。

### 戻り値

成功した場合に PgSql\Result クラスのインスタンスを返します。 失敗した場合に `false` を返します

### 変更履歴

バージョン | 説明
--- | ---
8.1.0 | PgSql\Result クラスのインスタンスを返すようになりました。 これより前のバージョンでは、resource を返していました。
8.1.0 | `connection` は、PgSql\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。

### 例

例1 pg_query() の例

    <?php

    $conn = pg_pconnect("dbname=publisher");
    if (!$conn) {
      echo "An error occurred.\n";
      exit;
    }

    $result = pg_query($conn, "SELECT author, email FROM authors");
    if (!$result) {
      echo "An error occurred.\n";
      exit;
    }

    while ($row = pg_fetch_row($result)) {
      echo "Author: $row[0]  E-mail: $row[1]";
      echo "<br />\n";
    }

    ?>

例2 pg_query() で複数の文を使用する例

    <?php

    $conn = pg_pconnect("dbname=publisher");

    // これらの文がひとつのトランザクションとして実行されます

    $query = "UPDATE authors SET author=UPPER(author) WHERE id=1;";
    $query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;";
    $query .= "UPDATE authors SET author=NULL WHERE id=3;";

    pg_query($conn, $query);

    ?>

### 参考

- pg_connect() - PostgreSQL 接続をオープンする
- pg_pconnect() - 持続的な PostgreSQL 接続をオープンする
- pg_fetch_array() - 行を配列として取得する
- pg_fetch_object() - 行をオブジェクトとして得る
- pg_num_rows() - 行数を返す
- pg_affected_rows() - 変更されたレコード(タプル)の数を返す

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