有没有办法让 PHP 将 sql 结果直接转换为 JSON?

Posted

技术标签:

【中文标题】有没有办法让 PHP 将 sql 结果直接转换为 JSON?【英文标题】:Is there a way to have PHP convert sql results straight to JSON? 【发布时间】:2012-05-24 21:37:37 【问题描述】:

我很好奇我是否必须自己动手,或者是否有一个我忽略的预制 php SQL 库,我可以通过它传入一个 sql 选择查询并让它返回一个 JSON 对象(或字符串)作为结果。

在伪代码中我想要的是这样的:

$startIndex = 0;
$myJSON = magicSqlToJSON("select first_name, last_name, phone,  (select count(id) from users) as total from users limit $startIndex, 2");

$myJSON 现在是:

"users":[
   "first_name":"Peter", "last_name":"O'Tool","phone":"1234567890","total":"100",
   "first_name":"Gary", "last_name":"Shandling","phone":"1234567890","total":"100"
]

我知道自己写这篇文章不会花很长时间,但我有点认为这是一种太常见的需求,以至于它已经不存在了。

【问题讨论】:

【参考方案1】:

PHP 中没有原生的单个函数

但是,您可以使用mysqli_fetch_array()(例如)和json_encode() 的组合快速完成此操作。您可能需要稍微调整父格式(即在“users”下方)

【讨论】:

【参考方案2】:

PHP

为此,PHP 具有 json_encode()json_decode() 函数,但您需要使用 foreach 或类似名称手动循环数据。

MySQL

您可以使用用户定义函数,例如 lib_mysqludf_json,它允许您从查询中返回 JSON 数组,如下所示:

select json_array(
           customer_id
       ,   first_name
       ,   last_name
       ,   last_update
       ) as customer
from   customer 
where  customer_id =1;

产生这个结果:

+------------------------------------------+
| customer                                 |
+------------------------------------------+
| [1,"MARY","SMITH","2006-02-15 04:57:20"] |
+------------------------------------------+

该 UDF 中还有一个 json_object 函数,它应该可以非常接近地表示您的问题中的示例。

【讨论】:

这很酷,但其他答案似乎更接近我正在寻找的内容【参考方案3】:

没有直接功能,但你可以做其他事情:

结果来自一个数组,所以只需调用

json_encode(数组); -> http://php.net/manual/en/function.json-encode.php

就是这样

例子:

$query = "select first_name, last_name, phone,  (select count(id) from users) as total from users limit $startIndex, 2";
$result = mysql_query($query) or die(mysql_error());

echo json_encode(mysql_fetch_array($result));

【讨论】:

修正对不起我有点累了:)【参考方案4】:

假设您使用 PDO

echo json_encode($pdo->exec($sql)->fetchAll());

否则,一般模式是

$handle = execute_query($sql);
$rows = array();
while ($row = get_row_assoc($handle)) 
    $rows[] = $row;

echo json_encode($rows);

【讨论】:

以上是关于有没有办法让 PHP 将 sql 结果直接转换为 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

SQL SERVER字符串转换问题

如何使用 php 数组将 sql 查询结果转换为数据透视表?

有没有办法将 SQL Server 2008 mdf 文件转换为 SQL Server Express 版本?

在 php 中将 XML 文档转换为数组时,有没有办法将其转换回来并将其保存为属性为元素的 XML 文件?

PHP - 有没有办法将字符串中的数组转换为 PHP 中的有效数组?

有没有办法通过 PHP 自动将 XML 页面转换为 JSON? [复制]