如何从我的特定 sql 查询中返回 json?
Posted
技术标签:
【中文标题】如何从我的特定 sql 查询中返回 json?【英文标题】:How can I return json from my specific sql query? 【发布时间】:2015-08-07 09:05:19 【问题描述】:我有以下 php 代码:
<?php
$servername = "host";
$username = "user";
$password = "passw";
$dbname = "dbname";
$conn3 = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn3->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$q3 = $conn3->prepare("SELECT c.one, c.two FROM table c");
$q3->execute();
if($q3->rowCount()>0)
$check3 = $q3->fetchAll(PDO::FETCH_ASSOC);
$arr = array();
foreach ($check3 as $row)
$arr[] = $row;
//how can I return json format here?
$conn2 = null;
?>
并且此查询返回元素对。但是如何修改上面的代码以获取元素的json格式为:
key1:OSO;key2:AIKA 等
这样我以后可以在 jquery 文件中使用它来打印它,并具有以下功能:
$.getJSON('list.php', function(json)
//assuming list.php resides with list.html directory
//console.log(json)
console.log(json.result.key1);
console.log(json.result.key2);
);
谢谢!
【问题讨论】:
【参考方案1】:改变
SELECT c.one, c.two FROM table c
到
SELECT c.one as key1, c.two as key2 FROM table c
然后将结果封装成json(foreach
之后):
echo json_encode(array(
'result'=>$arr
));
但您很可能需要在 jquery 中循环遍历它们。 您的 json 输出将类似于:
result: [
'key1': 'asd', 'key2': 'qwe',
[...]
'key1': 'asd', 'key2': 'qwe'
]
像这样循环遍历它们:
//first, see how it looks:
console.log(json.result);
jQuery.each( json.result, function( i, subresult )
console.log(subresult);
// you should be able to use: subresult.key1
);
【讨论】:
嘿,谢谢,你能给我一些例子来说明如何在 jquery 中循环它们吗?谢谢! 谢谢,我做了if($q3->rowCount()>0) $check3 = $q3->fetchAll(PDO::FETCH_ASSOC); $arr = array(); foreach ($check3 as $row) $arr[] = $row; echo json_encode( 'result'=>$arr );
,但现在我收到错误Parse error: syntax error, unexpected T_DOUBLE_ARROW
,我不确定这里有什么问题:|
我的错。这是 json_encode(array('result'=>$arr));我在打电话
嘿@Alex,感谢您的奉献!您的解决方案奏效了!以上是关于如何从我的特定 sql 查询中返回 json?的主要内容,如果未能解决你的问题,请参考以下文章
Django 使用自定义 SQL 而不是模型将 JSON 对象返回到模板
如何加入从我的数组的每个元素的数据库中提取的结果并在 Laravel 8 中以 json 形式返回