2024 年 PHP 大会日本站

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_ERRORPGSQL_FATAL_ERROR。否则,返回包含 PostgreSQL 命令标记的 string

变更日志

版本 描述
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
"复制开始.";
else
echo
"复制失败.";

?>

以上示例将输出

Copy began.

参见

添加注释

用户贡献的注释 4 条注释

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
匿名
10 年前
此函数很有用,它可能不会返回完整的非致命错误,但您仍希望查看查询是否已完成。

示例

<?PHP
// 连接到 pg 数据库
// 创建 PGSQL

$PGSTAT = pg_result_status($PGSQL);// 默认使用长整型

// 并运行一个检查,例如

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);
// 得到类似元组确定这样的结果,所以我建议只使用默认的长整型
?>
或使用您认为合适的任何条件检查
Meej Vaj
19 年前
如果您的程序“意外地”将 pg_result_status 传递了一个不是实际 pg 资源的变量,它将返回一个空字符串。
(如果您想在尝试对它进行某些操作之前确保 pg 资源是“好的”,则了解这一点很重要)。
dean at deansas dot org
11 年前
PostgreSQL 文档指出 PHP 永远不应该返回 PGRES_NONFATAL_ERROR。

“PQexec 或其他查询执行函数永远不会直接返回状态为 PGRES_NONFATAL_ERROR 的结果” https://postgresql.ac.cn/docs/current/static/libpq-exec.html

因此,您无法使用此函数来检查此查询是否产生了通知。
To Top