PHP Conference Japan 2024

pg_result_error_field

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

pg_result_error_field傳回錯誤報告的個別欄位

說明

pg_result_error_field(PgSql\Result $result, int $field_code): string|false|null

pg_result_error_field() 會傳回與 result 實例相關聯的其中一個詳細錯誤訊息欄位。它僅適用於 PostgreSQL 7.4 或更高版本的伺服器。field_code 指定了錯誤欄位。

因為如果查詢失敗,pg_query()pg_query_params() 會傳回 false,所以您必須使用 pg_send_query()pg_get_result() 來取得結果控制代碼。

如果您需要從失敗的 pg_query() 查詢中取得額外的錯誤資訊,請使用 pg_set_error_verbosity()pg_last_error(),然後解析結果。

參數

result

pg_query()pg_query_params()pg_execute()(以及其他函式)傳回的 PgSql\Result 實例。

field_code

可能的 field_code 值為:PGSQL_DIAG_SEVERITYPGSQL_DIAG_SQLSTATEPGSQL_DIAG_MESSAGE_PRIMARYPGSQL_DIAG_MESSAGE_DETAILPGSQL_DIAG_MESSAGE_HINTPGSQL_DIAG_STATEMENT_POSITIONPGSQL_DIAG_INTERNAL_POSITION(僅限 PostgreSQL 8.0 以上版本)、PGSQL_DIAG_INTERNAL_QUERY(僅限 PostgreSQL 8.0 以上版本)、PGSQL_DIAG_CONTEXTPGSQL_DIAG_SOURCE_FILEPGSQL_DIAG_SOURCE_LINEPGSQL_DIAG_SOURCE_FUNCTION

傳回值

一個包含錯誤欄位內容的 字串,如果該欄位不存在則傳回 null,如果失敗則傳回 false

更新日誌

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

範例

範例 #1 pg_result_error_field() 範例

<?php
$dbconn
= pg_connect("dbname=publisher") or die("無法連線");

if (!
pg_connection_busy($dbconn)) {
pg_send_query($dbconn, "select * from doesnotexist;");
}

$res1 = pg_get_result($dbconn);
echo
pg_result_error_field($res1, PGSQL_DIAG_SQLSTATE);
?>

另請參閱

新增註釋

使用者貢獻的註釋 1 則註釋

0
dev at gwouite dot fr
1 年前
libpq 文件中欄位代碼的完整列表...

警告:它們的前綴是「PG_」,只需更改為「PGSQL_」,它們就可以作為已定義的 PHP 值使用。

對我來說,最重要的欄位都以星號 (*) 作為後綴;)

PG_DIAG_SEVERITY
PG_DIAG_SEVERITY_NONLOCALIZED *
PG_DIAG_SQLSTATE *
PG_DIAG_MESSAGE_PRIMARY
PG_DIAG_MESSAGE_DETAIL
PG_DIAG_MESSAGE_HINT
PG_DIAG_STATEMENT_POSITION
PG_DIAG_INTERNAL_POSITION
PG_DIAG_INTERNAL_QUERY
PG_DIAG_CONTEXT
PG_DIAG_SCHEMA_NAME *
PG_DIAG_TABLE_NAME *
PG_DIAG_COLUMN_NAME *
PG_DIAG_DATATYPE_NAME *
PG_DIAG_CONSTRAINT_NAME
PG_DIAG_SOURCE_FILE
PG_DIAG_SOURCE_LINE
PG_DIAG_SOURCE_FUNCTION

來源和欄位代碼詳細資訊:https://postgresql.dev.org.tw/docs/current/libpq-exec.html
To Top