[英]postgres stored procedure json error
所以我正在制作一個我想要顯示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';
}
現在,我的代碼始終返回失敗,並且我不知道為什么或如何解決此問題。 預先感謝您的幫助!
這個:
$contests = pg_query($query);
json_decode($contests)
是荒謬的。 如果將您的json_decode
替換為打印語句,則會看到原因。
根據手冊 , pg_query
的返回值為:
成功的查詢結果資源或失敗的查詢結果資源。
如果查看示例,將看到一些基本用法,在該用法中,您需要使用pg_fetch_row
或類似方法來訪問結果。
考慮到查詢結果可以具有多行和每行多個值,這是有道理的。
上面的文檔鏈接的“另請參見”部分為您提供了所需的功能。
在這種情況下,我建議使用pg_fetch_result
(請參見側欄)。
當您使用它時,一些基本的錯誤處理將是明智的。
我也強烈懷疑您沒有使用綁定參數,而使自己陷入SQL注入 。 使用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)) {
# ....
}
現在,認真閱讀手冊 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.