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(致命錯誤)
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_result_status — 取得查詢結果的狀態
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_QUERY
、PGSQL_COMMAND_OK
、PGSQL_TUPLES_OK
、PGSQL_TUPLES_CHUNK
、PGSQL_COPY_OUT
、PGSQL_COPY_IN
、PGSQL_BAD_RESPONSE
、PGSQL_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.
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(致命錯誤)
這個函式很有用,它可能不會返回完整的非致命錯誤,但您仍想查看查詢是否完成。
範例
<?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
?>
或使用您認為合適的任何條件檢查
如果您的程式「意外地」將非實際 pg 資源的變數傳遞給 pg_result_status,它將返回空字串。
(如果您想在對 pg 資源執行某些操作之前確保它是「有效的」,那麼了解這一點很重要)。
PostgreSQL 文件指出,PHP 應該永遠不會返回 PGRES_NONFATAL_ERROR
「PQexec 或其他查詢執行函式永遠不會直接返回 PGRES_NONFATAL_ERROR 狀態的結果」 https://postgresql.dev.org.tw/docs/current/static/libpq-exec.html
因此,您不能使用此函式來檢查此查詢是否產生了通知。