【发布时间】:2014-01-08 17:06:08
【问题描述】:
我有一个按列排序的 mysql 查询。如果我只运行 php,它工作正常。在我使用 json_encode 并将其发送给客户端后,顺序更改为主键。为什么会这样,有解决办法吗?
查询如下:
try{
$dbh = new PDO('mysql:host=localhost;dbname=Batik', 'root', 'root');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$_SESSION['table'] = $_SESSION['category'] = $table = $_GET['button'];
$count = $dbh->query("SELECT * FROM $table ORDER BY `order` ASC");
$count->setFetchMode(PDO::FETCH_ASSOC);
$myarray = array();
while ($row = $count->fetch()) {
$id = array_shift($row);
$myarray[$id] = $row;
}
print json_encode($myarray);
} catch (PDOException $exception) {
echo "There was an error uploading your information, please contact James for assistance. ";
error_log($exception->getMessage());
};
所以,我想要并在普通 php 中得到的输出是这样的:(ID = primary_key)
Order: ID: Location:
1 4 foto1.jpg
2 5 foto3.jpg
3 3 foto2.jpg
4 2 foto4.jpg
5 1 foto5.jpg
在我对数组进行 json_encode 并输出到客户端后,我得到:(ID = primary_key)
Order: ID: Location:
5 1 foto5.jpg
4 2 foto4.jpg
3 3 foto2.jpg
1 4 foto1.jpg
2 5 foto3.jpg
我希望这是有道理的。
【问题讨论】:
-
究竟在哪里发生了变化,你能澄清一下并举个例子吗?数据在哪一点发生变化?
-
我以前也遇到过这个问题,在我的情况下,我最终不得不通过在原始数据旁边传递一个
order数组在 Javascript 中对其进行重新排序
标签: php mysql pdo sql-order-by json