我有一个非常奇怪的问题。我正在查询数据并将其格式化为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;
答案 0 :(得分:7)
请停止现在正在做的事情并查看:http://php.net/manual/en/function.json-encode.php
构建自己的json编码器将很难正确执行,并且如果您是从PHP执行此操作将需要相当多的处理。使用PHP构建数据结构,然后一次编码整个过程:
$o = array();
while ( $row = mysql_fetch_assoc($res) ) {
$n = array();
$n['loc_id'] = $row['loc_id'];
$n['type'] = $row['type'];
# ...
$o[ $row['id'] ] = $n;
}
echo json_encode($o);