2

我很好奇我是否必须自己动手,或者是否有一个我忽略的预制 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"}
]}

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

4

4 回答 4

2

PHP中没有原生的单一函数

但是,您可以使用mysqli_fetch_array()(例如)和json_encode(). 您可能需要稍微调整父格式(即在“用户”下方)

于 2012-05-24T21:40:06.217 回答
2

PHP

PHP 具有用于此目的的json_encode()andjson_decode()函数,但您需要使用 aforeach或类似函数手动循环数据。

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函数,它应该为您提供问题中样本的非常接近的表示形式。

于 2012-05-24T21:45:21.837 回答
1

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

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

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));
于 2012-05-24T21:39:32.057 回答
0

我假设你使用 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);
于 2012-05-24T22:16:22.357 回答