pg_fetch_object

行をオブジェクトとして得る

説明

objectfalse pg_fetch_object(
    PgSql\Result $result,
    intnull $row = null,
    string $class = "stdClass",
    array $constructor_args = []
)

pg_fetch_object は、取得した行のフィールド名に 対応するプロパティを有するオブジェクトを返します。オプションとして、 指定したクラスのコンストラクタにパラメータを渡してインスタンス化する ことも可能です。

注意: この関数は、 NULL フィールドに PHPの null 値を設定します。

速度面では、この関数は pg_fetch_array と同じであり、 pg_fetch_row とほとんど同じ程度です (違いはわずかです)。

パラメータ

result

pg_querypg_query_params や (様々な関数がありますが、特に) pg_execute が返した PgSql\Result クラスのインスタンス。

row

取得する行番号。最初の行は 0 です。省略したり null を指定したりした場合は、 次の行を取得します。

class

インスタンス化し、プロパティを設定して戻り値とするクラスの名前。 指定しない場合は stdClass オブジェクトが返されます。

constructor_args

class オブジェクトのコンストラクタに 渡すオプションの配列。

戻り値

結果の各フィールドに対応する属性を持つ object を返します。 データベースの NULL 値は null として返します。

row が結果の行数より大きい場合・行が存在しない場合 、そしてそれ以外のエラーが発生した場合は false を返します。

エラー / 例外

constructor_args が空ではないのに、 クラスにコンストラクタが存在しない場合、 ValueError がスローされます。

変更履歴

バージョン 説明
8.3.0 constructor_args が空ではないのに、 クラスにコンストラクタが存在しない場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、Exception がスローされていました。
8.1.0 result は、PgSql\Result クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。

例1 pg_fetch_object の例

<?php 

$database = "store";

$db_conn = pg_connect("host=localhost port=5432 dbname=$database");
if (!$db_conn) {
  echo "Failed connecting to postgres database $database\n";
  exit;
}

$qu = pg_query($db_conn, "SELECT * FROM books ORDER BY author");


while ($data = pg_fetch_object($qu)) {
  echo $data->author . " (";
  echo $data->year . "): ";
  echo $data->title . "<br />";
}

pg_free_result($qu);
pg_close($db_conn);

?>

参考

  • pg_query
  • pg_fetch_array
  • pg_fetch_assoc
  • pg_fetch_row
  • pg_fetch_result