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_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
"Copy began.";
else
echo
"Copy failed.";

?>

上面的例子将输出

Copy began.

参见

添加注释

用户贡献注释 4 个注释

romix at gmx dot de
21 年前
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);// 默认值为 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
?>
或使用您认为合适的任何条件检查
Meej Vaj
19 年前
如果您的程序“意外地”将 pg_result_status 传递了一个不是实际 pg 资源的变量,它将返回一个空字符串。
(这很重要,如果您想确保 pg 资源“良好”,然后尝试对其进行某些操作)。
dean at deansas dot org
11 年前
postgres 文档说 PHP 永远不应该返回 PGRES_NONFATAL_ERROR

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

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