2024 年 PHP Conference Japan

pg_result_status

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

pg_result_status 取得查詢結果的狀態

說明

pg_result_status(PgSql\Result $result, int $mode = PGSQL_STATUS_LONG): string|int

pg_result_status() 會回傳 PgSql\Result 實例的狀態,或是與結果關聯的 PostgreSQL 指令完成標記。

參數

result

一個 PgSql\Result 實例,由 pg_query()pg_query_params()pg_execute()(以及其他函式)所回傳。

mode

可以是 PGSQL_STATUS_LONG 來回傳 result 的數字狀態,或是 PGSQL_STATUS_STRING 來回傳 result 的指令標記。如果未指定,則預設為 PGSQL_STATUS_LONG

回傳值

如果指定 PGSQL_STATUS_LONG,可能的回傳值為 PGSQL_EMPTY_QUERYPGSQL_COMMAND_OKPGSQL_TUPLES_OKPGSQL_TUPLES_CHUNKPGSQL_COPY_OUTPGSQL_COPY_INPGSQL_BAD_RESPONSEPGSQL_NONFATAL_ERROR 以及 PGSQL_FATAL_ERROR。否則,會回傳包含 PostgreSQL 指令標記的 字串

更新日誌

版本 說明
8.1.0 result 參數現在需要一個 PgSql\Result 實例;先前需要的是一個 資源

範例

範例 #1 pg_result_status() 範例

<?php

// 連線到資料庫
$conn = pg_pconnect("dbname=publisher");

// 執行 COPY
$result = pg_query($conn, "COPY authors FROM STDIN;");

// 取得結果狀態
$status = pg_result_status($result);

// 判斷狀態
if ($status == PGSQL_COPY_IN)
echo
"Copy 開始。";
else
echo
"Copy 失敗。";

?>

上述範例會輸出

Copy began.

另請參閱

新增註記

使用者貢獻的註記 4 則註記

2
romix at gmx dot de
22 年前
0 = PGSQL_EMPTY_QUERY(空查詢)
1 = PGSQL_COMMAND_OK(命令執行成功)
2 = PGSQL_TUPLES_OK(資料列擷取成功)
3 = PGSQL_COPY_TO(複製到)
4 = PGSQL_COPY_FROM(從...複製)
5 = PGSQL_BAD_RESPONSE(錯誤的回應)
6 = PGSQL_NONFATAL_ERROR(非致命錯誤)
7 = PGSQL_FATAL_ERROR(致命錯誤)
2
匿名
10 年前
這個函式很有用,它可能不會返回完整的非致命錯誤,但您仍想查看查詢是否完成。

範例

<?PHP
//連線到 pg 資料庫
// 建立 PGSQL

$PGSTAT = pg_result_status($PGSQL);//預設為 long

//並執行檢查,例如

if(($PGSTAT == 1) || ($PGSTAT == 2)){
// 查詢結果;
}else if(($PGSTAT == 3) || ($PGSTAT == 4)){
// 複製結果;
}
if((
$PGSTAT != 0) && ($PGSTAT != 5) && ($PGSTAT != 6) && ($PGSTAT != 7)){
// 您的程式碼;
}else{
// $ERRORS 錯誤碼;
}
// 到目前為止,這對我來說最有效,我嘗試使用
// 命令標籤,但我似乎仍然得到數值結果
//例如
//$PGSTAT = pg_result_status($PGSQL, PGSQL_COMMAND_OK);
// 得到類似 tuples ok 的結果,所以我建議只使用預設的 long
?>
或使用您認為合適的任何條件檢查
-1
Meej Vaj
19 年前
如果您的程式「意外地」將非實際 pg 資源的變數傳遞給 pg_result_status,它將返回空字串。
(如果您想在對 pg 資源執行某些操作之前確保它是「有效的」,那麼了解這一點很重要)。
-1
dean at deansas dot org
11 年前
PostgreSQL 文件指出,PHP 應該永遠不會返回 PGRES_NONFATAL_ERROR

「PQexec 或其他查詢執行函式永遠不會直接返回 PGRES_NONFATAL_ERROR 狀態的結果」 https://postgresql.dev.org.tw/docs/current/static/libpq-exec.html

因此,您不能使用此函式來檢查此查詢是否產生了通知。
To Top