Поэтому я делаю приложение, в котором я хочу отображать строку 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
является:
Ресурс результата запроса в случае успеха или FALSE в случае ошибки.
и если вы посмотрите на примеры, вы увидите базовое использование, где вы увидите, что вам нужно использовать 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)) {
# ....
}
Теперь серьезно иди почитай руководство.
Других решений пока нет …