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

问题描述:

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

是这样的:

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 
} 

这应该工作:

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

如果他想以某种方式操纵结果集,该怎么办? – NullUserException 2010-08-07 13:00:23

+0

塞巴斯蒂安的解决方案似乎工作 – 2010-08-07 13:09:22

+1

@NullUserException他不应该使用这个泛型然后。 – 2010-08-07 13:15:49

是否有PHP函数或类,我可以通过一个MySQL的记录,我得到一个JSON字符串返回,可以在被传递回JavaScript函数Ajax请求?

是:json_encode()

+0

是的谢谢。我遇到的麻烦是准备一个包含多个mysql记录集的PHP数组,然后可以对其进行编码。 – 2010-08-07 12:58:53

+0

我刚发现可能有用的东西。 www.barattalo.it/2010/01/25/10-php-usefull-functions-for-mysql-stuff/。 ___但是我无法在JavaScript中引用字段。 – 2010-08-07 13:01:18