在PHP中将MySQL记录集转换为JSON字符串[重复]
Posted
技术标签:
【中文标题】在PHP中将MySQL记录集转换为JSON字符串[重复]【英文标题】:Convert MySQL record set to JSON string in PHP [duplicate] 【发布时间】:2011-03-26 17:18:37 【问题描述】: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
【问题讨论】:
【参考方案1】:我想对@Sebastian 代码进行一点集成。
请不要在 while 测试条件下进行赋值,否则最后一次检查(停止循环并返回 false 的检查)会将 false 值放入数组中。
所以,正确的方法是
function recordSetToJson($mysql_result)
$rs = array();
while($row=mysql_fetch_assoc($mysql_result))
$rs[]=$row;
return json_encode($rs);
【讨论】:
【参考方案2】:这应该可行:
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;
);
【讨论】:
@NullUserException 他不应该使用这个通用的函数。 我添加了一个允许您处理记录的版本。【参考方案3】:PHP 中是否有一个函数或类可以传递 MySQL 记录集并返回一个 JSON 字符串,该字符串可以在 Ajax 请求中传递回 JavaScript 函数?
是的:json_encode()
【讨论】:
好的,谢谢。我遇到的麻烦是准备一个包含多个 mysql 记录集的 PHP 数组,然后可以对其进行编码。 我刚刚发现了一些可行的方法。 www.barattalo.it/2010/01/25/10-php-usefull-functions-for-mysql-stuff/。 ___ 但是我无法在 javascript 中引用字段。以上是关于在PHP中将MySQL记录集转换为JSON字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PHP 中将非 json 字符串转换为有效的 json 字符串