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
}
答案 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函数?
答案 2 :(得分:0)
我想对@Sebastian代码进行一些集成。
请不要在while测试条件下进行赋值,请不要将最后一个检查(停止循环并返回false的检查)放入数组中。
所以,正确的方法是
function recordSetToJson($mysql_result) {
$rs = array();
while($row=mysql_fetch_assoc($mysql_result)) {
$rs[]=$row;
}
return json_encode($rs);
}