使用while循环以相反的顺序获取值

时间:2012-09-05 13:32:51

标签: php while-loop fetch

我有一个从数据库中检索值的代码。但是我想以相反的顺序获取这个值。参见这个例子

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控制它吗?

4 个答案:

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