簡體   English   中英

postgres存儲過程json錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM