【问题标题】:Convert MySQL record set to JSON string in PHP [duplicate]在PHP中将MySQL记录集转换为JSON字符串[重复]
【发布时间】: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
}

【问题讨论】:

    标签: php mysql json


    【解决方案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 中引用字段。
      猜你喜欢
      • 2013-02-23
      • 2019-07-22
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多