Преобразовать набор записей MySQL в строку JSON в PHP - PullRequest
6 голосов
/ 07 августа 2010

Есть ли в PHP функция или класс, в котором я могу передать набор записей MySQL и получить возвращенную строку JSON, которую можно передать обратно функции JavaScript в запросе Ajax?

как то так:

function recordSetToJson($recordset) {
 while($rs1 = mysql_fetch_row($recordset)) {
  for($count = 0; $count < count($rs1); $count++) {
   //  read and add field to JSON
  }
  $count++;
 }

 return $jasonstring
}

Ответы [ 2 ]

13 голосов
/ 07 августа 2010

Это должно работать:

function recordSetToJson($mysql_result) {
 $rs = array();
 while($rs[] = mysql_fetch_assoc($mysql_result)) {
    // you don´t really need to do anything here.
  }
 return json_encode($rs);
}

Если вам нужно манипулировать результирующим набором, вы можете использовать следующую более сложную версию, которая позволяет добавить функцию обратного вызова, которая будет вызываться для каждой записи ивернуть ту запись, уже обработанную:

function recordSetToJson($mysql_result, $processing_function = null) {
 $rs = array();
 while($record = mysql_fetch_assoc($mysql_result)) {
   if(is_callable($processing_function)){
    // callback function received.  Pass the record through it.
    $processed = $processing_function($record);
    // if null was returned, skip that record from the json.
    if(!is_null($processed)) $rs[] = $processed;
   } else {
    // no callback function, use the record as is.
    $rs[] = $record;
   }
 }
 return json_encode($rs);
}

использовать ее так:

$json = recordSetToJson($results, 
    function($record){ 
      // some change you want to make to every record:
      $record["username"] = strtoupper($record["username"]);
      return $record;
    });
5 голосов
/ 07 августа 2010

Есть ли в PHP функция или класс, по которым я могу передать набор записей MySQL и получить возвращенную строку JSON, которую можно передать обратно функции JavaScript в запросе Ajax?

Да: json_encode()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...