在PHP中将MySQL记录集转换为JSON字符串

时间:2010-08-07 12:49:23

标签: php mysql json

PHP中是否有函数或类可以传递MySQL记录集,并且返回一个JSON字符串,可以传递回Ajax请求中的JavaScript函数?

类似的东西:

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
}

3 个答案:

答案 0 :(得分:13)

这应该有效:

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;
    });

答案 1 :(得分:5)

  

PHP中是否有函数或类可以传递MySQL记录集,并且返回一个JSON字符串,可以传递回Ajax请求中的JavaScript函数?

是:json_encode()

答案 2 :(得分:0)

我想对@Sebastian代码进行一些集成。

请不要在while测试条件下进行赋值,请不要将最后一个检查(停止循环并返回false的检查)放入数组中。

所以,正确的方法是

function recordSetToJson($mysql_result) {
    $rs = array();
    while($row=mysql_fetch_assoc($mysql_result)) {
        $rs[]=$row;
    }
    return json_encode($rs);
}