Как вернуть данные, извлеченные из MySQL, в php-файл в формате JSON?


Я должен вернуть данные, извлеченные из таблицы MySQL, в файл php в формате JSON. Вот мой код для подключения к mysql и получения из него данных. Как теперь я могу вернуть его как JSON.

<?php
    $username = "user";
    $password = "********";
    $hostname = "localhost";    
    $dbh = mysql_connect($hostname, $username, $password) 
        or die("Unable to connect to MySQL");
    print "Connected to MySQL<br>";
    $selected = mysql_select_db("spec",$dbh) 
        or die("Could not select first_test");
    //$rows = array();  

    $query = "SELECT * FROM user_spec"; 
    $result=mysql_query($query);

    //mysql_close($dbh);
    ?>

Под полным стеком, который я должен реализовать. Для шага 3 я визуализирую список динамически, используя вводимые пользователем данные, хотя он не использует какой-либо движок, а напрямую использует входные значения, поэтому мне нужно посмотреть, как это сделать, как только я получу данные JSON. Я кладу стопку, чтобы вы, люди, могли любезно увидеть, что я должен делать, когда возможно, помогает мне.

  1. пользователь загружает HTML-страницу
  2. страница выполняет вызов ajax и получает параметры в виде JSON (либо он уже существует в базе данных, либо создается новый набор параметров)
  3. json визуализируется с использованием механизма шаблонов JS (в нашем случае ЧИСТОГО)
  4. пользователь что-то меняет
  5. тот же JSON модифицируется и отправляется по почте на сервер
  6. сервер прочитал этот JSON и сохранил его в базе данных (вы бы записали данные в свой файл). А затем вернитесь к шагу 4, чтобы дождаться другого изменения пользователя.
Author: XCeptable, 2010-10-19

3 answers

Учитывая, что возвращается только одна строка user_spec, вы можете использовать встроенный json_encode функция:

<?php
$username = "user";
$password = "********";
$hostname = "localhost";    
$dbh = mysql_connect($hostname, $username, $password) 
    or die("Unable to connect to MySQL");

//print "Connected to MySQL<br>";

$selected = mysql_select_db("spec",$dbh) 
    or die("Could not select first_test");

$query = "SELECT * FROM user_spec"; 
$result=mysql_query($query);

echo json_encode(mysql_fetch_assoc($result));

?>

Должно сработать.

Даже если вы используете более старую версию PHP, вы можете найти подходящую функцию в комментариях пользователей на странице руководства json_encode PHP, чтобы использовать ее на своем месте.

 3
Author: Brad F Jacobs, 2010-10-18 20:41:08

Я думаю, что вы ищете json_encode

 2
Author: mcgrailm, 2010-10-18 20:36:21

Если вы не похожи на меня, использующего болезненно старую версию Symfony (ради вас, я надеюсь, что нет!), ваш ответ json_encode Zend и CodeIgniter имеют аналогичные другие простые методы.

Если вам не повезло получить к нему доступ, вы можете создать его вручную с помощью цикла foreach.

Вы можете проверить свои строки JSON с помощью JSONLint

 1
Author: bpeterson76, 2010-10-18 20:35:59