#php #json
#php #json
Вопрос:
Я пытаюсь извлечь объект JSON из sql-запроса php-файла.
Для этого я создаю html-код с формой, action=queryProduct.php и метод post.
HTML-код:
<form action="queryProduct.php" method="post">
<input name="codigo" type="text" placeholder="codigo">
<input type="submit" value="TEST">
</form>
queryProduct.php:
<?php
session_start();
if(isset($_SESSION['username']) amp;amp; $_SESSION['username'] <> ''){
include("functions.php");
include("tools.php");
$conn = Conectarse("localhost", "5432", "dbname", "dbuser", "dbpass");
$codigo = $_POST['codigo'];
echo $codigo;
$query = "SELECT * FROM produccion.ma_producto WHERE codigo={$codigo}";
$result = pg_query($conn, $query);
if (!$result) {
echo "Error query: " . pg_last_error($conn);
} else {
header('Content-type: application/json; charset=utf-8');
echo json_encode($result);
}
echo json_encode($result);
pg_close($conn);
} else{
?><p>La sesión no está activa, por favor ingrese <a href="login.php">aquí</a></p>
<?php
}?>
Идея заключается в том, чтобы создать объект JSON из результата запроса и отобразить объект в браузере: echo json_encode($result);
Теперь это ничего не значит: (
Я протестировал sql-запрос, и он работает нормально…
Комментарии:
1. php.net/manual/en/function.pg-fetch-array.php
2. @AbraCadaver Я видел эту функцию, но мой запрос показывает только регистр, а не несколько. Это необходимо?
3. для чего вы отправляете
$codigo
? Если он НЕ является чисто числовым, то ваш запрос не работает, вы вводите синтаксические ошибки. И обратите внимание, что pg_query возвращает ДЕСКРИПТОР результата, а не данные, которые вы запрашивали. Вы не можете json_encode этот дескриптор результата.4. Посмотрите, что php.net/manual/en/function.pg-query.php возвращается. Используйте документы young Padawan.
Ответ №1:
Возвращаемые значения: ресурс результата запроса при успешном выполнении или FALSE при сбое.
Это result resource
НЕ то, что вы можете json_encode() . Вы должны извлекать строки результатов с помощью этого дескриптора, помещать их в массив, а затем кодировать этот массив.