繁体   English   中英

即使SQL查询在pgAdminIII中正常工作,pg_query仍返回NULL

[英]pg_query returns NULL even though SQL query works correctly in pgAdminIII

问题

下面的代码返回“ queried ... NULL”(假设$id始终是6位数字)

$id = sprintf("%06d", $id);
$sql = 'SELECT DISTINCT first_name, last_name
        FROM schemaname.tablename
        WHERE person_id='.$id;
$q = pg_query($sql) or die(pg_last_error().' '.$sql);
print 'queried...';
$items = pg_fetch_all($q) or die(pg_last_error().' '.var_export($q, true));
print 'fetched...';
exit(0);

注意: person_id是一个integer not null

我尝试过的

到目前为止,您的所有测试似乎都已在PHP方面进行。 紧迫的问题是PostgreSQL方面正在发生什么。 我的赌注将是这样的:

  1. 该查询不是您想的那样。

  2. PostgreSQL没有得到您认为得到的东西。

  3. 还有别的

首先要做的是使用pgadmin登录并运行以下实用程序语句:

ALTER USER [app username] SET log_statements=all;

然后运行您的PHP脚本并检查PostgreSQL实际收到了什么。 然后,您可以从pgAdmin的日志中运行语句以进行检查。 例如,您可能会发现您的sprintf并没有按照您认为的那样做,或者您的查询中某处出现错字。

完成后,您可以:

 ALTER USER [app username] RESET log_statements;

您没有连接到数据库。 您需要创建一个数据库连接,然后将该连接的处理程序传递给pg_query()

$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occurred.\n";
    exit;
}

$id = sprintf("%06d", $id);
$sql = 'SELECT DISTINCT first_name, last_name
        FROM schemaname.tablename
        WHERE person_id='.$id;
$q = pg_query($conn, $sql) or die(pg_last_error().' '.$sql);
print 'queried...';
$items = pg_fetch_all($q) or die(pg_last_error().' '.var_export($q, true));
print 'fetched...';
exit(0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM