问题
以下代码返回“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
我尝试过什么
$id
USAGE
schemaname.tablename
权限
sprintf
语句(php images rename double digits)答案 0 :(得分:0)
到目前为止,您所有的测试看起来都像是在PHP方面发生的。当前的问题是PostgreSQL方面正在发生的事情。我打赌会是这样的:
查询不是您认为的。
PostgreSQL没有得到您认为的结果。
其他。
要做的第一件事是使用pgadmin登录并运行以下实用程序语句:
ALTER USER [app username] SET log_statements=all;
然后运行PHP脚本并检查PostgreSQL实际接收的内容。然后,您可以运行pgAdmin中的日志语句进行检查。例如,您可能会发现您的sprintf没有按照您的想法进行操作,或者您的查询中存在拼写错误。
完成后你可以:
ALTER USER [app username] RESET log_statements;
答案 1 :(得分:-2)
您没有连接到数据库。您需要创建数据库连接,然后将该连接的处理程序传递给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);