我有一个从数据库中检索值的代码。但是我想以相反的顺序获取这个值。参见这个例子
While($row=mysql_fetch_assoc($rs)){
echo $row['id']."<br>";//gives 1 and 2 and so on
echo $row['val']."<br>";// gives abc and def and so on
}
但我想要
2
def
1
abc
我怎么能这样做。我不想使用查询来使用ORDER BY.so我可以在PHP End控制它吗?
答案 0 :(得分:4)
while($row = mysql_fetch_array($rs)){
$data[] = $row;
}
$data = array_reverse($data,true);
while($data){
}
尚未测试
我在this site测试了它并且它有效。这是我使用的片段:
$data = array(1 => array("foo" => "bar"), 2 => true);
$data = array_reverse($data,true);
print_r($data);
编辑: 使用您编辑的答案,我得到了这个: $ data = array(1 =&gt; array(1,“abc”),2 =&gt; array(2,“def”));
$data = array_reverse($data,true);
foreach($data as $d){
echo "id>".$d[0]." | val>".$d[1]."<br />";
}
答案 1 :(得分:4)
将数据存储在数组中(在while循环中)。之后,您可以使用array_reverse来撤销商品订单。
答案 2 :(得分:1)
您还可以使用循环遍历结果集的游标 - 向后和向前移动 - 使用类似PDO的内容 - 并且可能为其他类型的连接提供类似的变体:
cursor_orientation
对于表示可滚动游标的PDOStatement对象,此值确定将哪个行返回给调用者。该值必须是PDO :: FETCH_ORI_ *常量之一,默认为PDO :: FETCH_ORI_NEXT。要为PDOStatement对象请求可滚动游标,在使用PDO :: prepare()准备SQL语句时,必须将PDO :: ATTR_CURSOR属性设置为PDO :: CURSOR_SCROLL。
但是使用array_reverse可能更简单。话虽如此,对查询中的数据进行排序会更简单(并且效率可能更高)。
答案 3 :(得分:1)
$result = $mysqli->query($query);
for($i = $result->num_rows - 1; $i>0; $i--){
$result->field_seek($i);
$finfo = $result->fetch_field();
echo $finfo->id;
echo $finfo->val;
}