在 PHP 中将 PDO 记录集转换为 JSON [重复]

Posted

技术标签:

【中文标题】在 PHP 中将 PDO 记录集转换为 JSON [重复]【英文标题】:Convert PDO recordset to JSON in PHP [duplicate] 【发布时间】:2013-02-23 15:18:43 【问题描述】:

我正在使用 php,我需要一种将整个记录集转换为 JSON 字符串的方法。

在搜索 Stack Overflow 时,我发现这个解决方案有效:

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);

这段代码的问题是我发现函数mysql_fetch_assoc() 在PHP 5.5.0 中已被弃用。另一件事是我使用 PDO 连接到我的数据库。

鉴于上述情况,将 PDO 记录集转换为 JSON 的最佳解决方案是什么?我希望它也能在更高版本的 PHP 中工作。

【问题讨论】:

你试过什么?有教程吗?从这里开始:***.com/tags/pdo/info 【参考方案1】:

你应该使用类似的东西

以前的某个地方

$stmt = $pdo->prepare("SELECT * FROM fruit WHERE name = ?");
$stmt->execute(array("Apple"));
....


function recordSetToJson($stmt) 
  $json_result = array();
  while($tmp = $stmt->fetch() ) 
       $json_result[] = $tmp;
  
  return json_encode($json_result);

但最终的解决方案将完全取决于太多因素。

【讨论】:

如果我没记错的话, array("Apple")) 不会做任何事情。但我明白了,就像我在评论中描述的那样。 @Jonast92 对不起,你是什么意思? 执行(array(":name" => "Apple"));会做点什么。 您的解决方案有效,但仍有一点问题。对于行上的每一列,它将创建 2 个具有相同值的属性。例如:"name":"john","0":john【参考方案2】:

解决方案很简单。 考虑到变量 $stmt 是您的 PDO 记录集,您可以像这样将其转换为 JSON:

json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));

有关这段代码中使用的函数的更多信息:

http://www.php.net/manual/en/function.json-encode.php

http://www.php.net/manual/en/pdostatement.fetchall.php

【讨论】:

以上是关于在 PHP 中将 PDO 记录集转换为 JSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中将 Json 转换为 CSV

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

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

在 PHP 中将 GMT 从 JSON 提要转换为当地时间

如何在 symfony2 中将 json 转换为 php 对象?

在 PHP 中将 JSON 转换为 XML,但在 XML 中为 JSON 数组创建一个容器元素