所以我正在创建一个我想要显示json字符串的应用程序(现在)。我用php(它工作)调用存储过程,该存储过程返回一行。
问题是返回的记录/行必须是json字符串。为此,我使用php:
$verbinding = pg_connect("host=**** port=**** dbname=*** user=******* password=****");
$query = 'SELECT to_json(function_name(parameter))';
$contests = pg_query($query);
if(json_decode($contests)) {
echo 'succeeded';
} else {
echo 'failed';
}
现在我的代码总是返回失败,我不知道为什么或如何解决这个问题。提前感谢您的帮助!
答案 0 :(得分:0)
此:
$contests = pg_query($query);
json_decode($contests)
是荒谬的。如果用打印语句替换json_decode
,您将看到原因。
每the manual pg_query
的返回值为:
成功时的查询结果资源或失败时为FALSE。
如果您查看示例,您会看到一些基本用法,您将看到需要使用pg_fetch_row
或类似内容来访问结果。
这是有道理的,因为查询结果可以有多行,每行有多个值。
"另见"上面的文档链接部分指出了您需要的功能。
在这种情况下,我建议使用pg_fetch_result
(参见侧栏)。
当你处理它时,一些基本的错误处理是明智的。
我还强烈怀疑你未能使用绑定参数,让自己暴露于SQL injection。 Use pg_query_params
这是您的起点。它未经测试,我并不真正使用PHP,但它应该让你知道你出错的地方:
$query = 'SELECT to_json(function_name($1))';
$contests = pg_query_params($query, array($somevariable))
or die(pg_last_error());
$json = pg_fetch_result($contests, 0, 0);
if(json_decode($json)) {
# ....
}
现在,严肃地说,去阅读手册。