PHP SQL - 由于“,”导致按日期排序失败

时间:2014-07-17 17:39:37

标签: php mysql sql json while-loop

我有一个非常奇怪的问题。我正在查询数据并将其格式化为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;

1 个答案:

答案 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);