説明
PgSql\Resultfalse pg_query(PgSql\Connection $connection
= ?, string $query
)
エラーが発生して 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
を返します
例
例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
- pg_pconnect
- pg_fetch_array
- pg_fetch_object
- pg_num_rows
- pg_affected_rows