在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字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 3 中将 JSON 字符串转换为字典

如何在 PHP 中将字符串转换为 JSON 对象

如何在 PHP 中将非 json 字符串转换为有效的 json 字符串

在 PHP 中将对象转换为 JSON 并将 JSON 转换为对象,(像 Gson for Java 之类的库)

在php中将字符串转换为MySQL时间戳格式

使用php将大量mysql记录转换为json