可能重复:
JSON编码MySQL结果
我想用php创建一个像下面这样的json对象.它将返回一个字符串作为结果sql查询的响应.
{"Orders":[
{"DeliveryId":"DeliveryId","CustomerName":"CustomerName","PhoneNumber":"PhoneNumber","Address":"Address"},
{"DeliveryId":"DeliveryId","CustomerName":"CustomerName","PhoneNumber":"PhoneNumber","Address":"Address"}
]
}
Run Code Online (Sandbox Code Playgroud)
我的代码
<?php
mysql_connect("mysql12.000webhost.com","a4602996_longvan","longvan2012");
mysql_select_db("a4602996_lv");
$id=$_POST[user];
$sql=mysql_query("select * from testlongvan where Status = 'PACKED'" );
$json = array();
if(mysql_num_rows($sql)){
while($row=mysql_fetch_row($sql)){
$json['Orders'][]=$row;
}
}
//while($row=mysql_fetch_assoc($sql))
//$output[]=$row;
print(json_encode($json));
mysql_close();
?>
Run Code Online (Sandbox Code Playgroud)
但是当使用我的代码时,结果不符合我的预期:
{"Orders":[["longvan","10/12/2012","Be34433jh","Long Van","115 Pham Viet Chanh,quan Binh Thanh","http://longvansolution.tk/image/ sample.jpg","PACKED","0909056788"],["takeshi","24/12/2012","BF6464633","Vn-zoom","16 nguyen cuu van,quan binh thanh","http ://longvansolution.tk/image/hoadon3.jpg","PACKED","098897657"]]}
你能帮助我吗?
我知道如何获取mysql-row并将其转换为json:
$row = mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM table WHERE id=1"));
echo json_encode($row); // it's an ajax-call
Run Code Online (Sandbox Code Playgroud)
但:
db-row有不同的类型,如int,float,string.通过使用json_encode()转换它,所有结果都是字符串.
是否有更好的方法来纠正类型:
$row['floatvalue1'] = 0+$row['floatvalue1'];
$row['floatvalue2'] = 0+$row['floatvalue2'];
$row['intvalue1'] = 0+$row['intvalue1'];
Run Code Online (Sandbox Code Playgroud)
我想循环键并添加0因为:
但我不能因为:
提前谢谢,请原谅我糟糕的英语:-)
编辑(回答Casimir et Hippolyte的评论问题):
我使用ajax调用这个php代码来获取动态的sql值.在我的javascript代码中,我使用如下结果:
result['intvalue1'] += 100;
Run Code Online (Sandbox Code Playgroud)
假设intval1的json-result为50,计算结果如下:
"50100",而不是150
我打算在搜索表单中使用jQuery UI Autosuggest.所以我需要一个json输出,可以被jQuery UI Auto建议使用.
这是数据库
表名为recent_tags
我试过这个
首先连接到db
$do = mysql_query("SELECT * FROM recent_tags where query like '%" . $_GET['query'] . "%'");
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['query'] = $row['query'];
array_push($return_arr,$row_array);
}
echo json_encode($return_arr);
Run Code Online (Sandbox Code Playgroud)
但它不起作用..
请指导我..
编辑:
得到错误
警告:array_push()[function.array-push]:第一个参数应该是/pathto/my/file.php中的数组
谢谢
终极目标:我想将我保存在MySQL数据库中的数据放入JavaScript中的数组数组中,因此可以在客户端进行操作.
到目前为止,我已经能够使用以下代码从我的数据库中提取数据:
<?php
...
$num=1;
$q = "SELECT blah1, blah2, blah3 WHERE blah4=$num";
$sth = mysqli_query ($database, $q);
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
$rows[] = $r;
}
print json_encode($rows);
?>
Run Code Online (Sandbox Code Playgroud)
(来自:JSON编码MySQL结果)
这是我被困的地方,因为我无法将这些数据导入JavaScript.
我能找到的一个解决方案是在Javascript中解析一个单独的PHP数组:
<script>
var jsonarray = <?php echo json_encode($array); ?>;
// now you can use jsonarray in your javascript
</script>
Run Code Online (Sandbox Code Playgroud)
但是这个实现的问题在于它会将我查询的所有数据库内容吐出到页面的源代码上.如果我必须这样做,我不妨跳过数据库并将所有内容保存在javascript中.
我认为必须有一种方法可以使用jQuery/AJAX将$ num的值传递给PHP脚本,获取此数据并将其放入JavaScript数组中,而无需将所有数据输出到页面.
任何援助将不胜感激.
谢谢!
从数据库检索数据并将数据转换为JSON字符串的最简单方法是什么?
有什么样的助手班吗?或者我应该遍历我的数据集中的列来创建JSON字符串?
foreach($hello_world as $key=>$product_id) {
if(in_array($key,$exclude))continue;
$query = $this->db->query("SELECT * FROM product where modelNumber = '$product_id'");
if ($query->num_rows() > 0) {
foreach($query->result() as $row) {
echo $row->name;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以给我建议如何json编码此查询的结果?谢谢
我遇到一个问题,从PHP查询返回的JSON无效,我不确定为什么; 我还在学习.当datatype排除时,以下代码返回:
{"Customer_ID":"0", "FirstName":"John", "LastName":"Smith"}
{"Customer_ID":"1", "FirstName":"Jane", "LastName":"Smith"}
Run Code Online (Sandbox Code Playgroud)
否则它返回:
SyntaxError: "JSON.parse: unexpected non-whitespace character after ..."
Run Code Online (Sandbox Code Playgroud)
我认为这可能是因为记录没有在单个JSON响应中返回,但我不能看到这是问题,因为并发响应是JSON.有任何想法吗?有什么建议?随意指出语义问题.
HTML:
getRecord("*", "customer", "");
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function getRecord(field, table, condition) {
var request = $.ajax({
url: "./handler.php",
method: "GET",
dataType: "JSON",
cache: "false",
data: {
action: "SELECT",
field: `${field}`,
table: `${table}`,
condition: `${condition}`,
},
});
request.done(function(data, status, xhr) {
console.log(data, status, xhr);
});
request.fail(function(xhr, status, error) {
console.log(xhr, status, error);
});
};
Run Code Online (Sandbox Code Playgroud)
PHP:
<?php
# IMPORT SETTINGS.
include "settings.php";
# FUNCTION DISPATCHER. …Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题.我正在查询数据并将其格式化为json.格式工作得很好,但是当我尝试添加一个案例来防止,出现在json的最后一项时,我的SQL语句的"按日期排序"不起作用,我只是通过ID命令它.有什么想法?
$sql = "SELECT * FROM events ORDER BY date";
$res = mysql_query($sql,$con);
$number = mysql_num_rows($res);
$json = 'var event_data={';
$i = 1;
while ($row = mysql_fetch_assoc($res))
{
$json .= '"'.$row['id'].'": {';
$json .= '"loc_id":"'.$row['loc_id'].'"';
$json .= ', "type":"'.$row['type'].'"';
$json .= ', "time":"'.$row['time'].'"';
$json .= ', "date":"'.$row['date'].'"}';
if ($i < $number)
{
$json .= ','; //<----- this is the problem child
}else{
$json .= '';
}
$i ++;
}
$json .= '};';
echo $json;
Run Code Online (Sandbox Code Playgroud) php ×8
json ×7
mysql ×4
javascript ×2
codeigniter ×1
html ×1
jquery ×1
mysqli ×1
sql ×1
while-loop ×1