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


Fetch Value in reverse order using while loop

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

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.那样使用Query。所以我能在PHP端控制它吗??

while($row = mysql_fetch_array($rs)){
    $data[] = $row;
}
$data = array_reverse($data,true);
while($data){
}

尚未通过进行测试

我在这个网站上测试了它,它有效。这是我使用的片段:

$data = array(1 => array("foo" => "bar"), 2 => true);
$data = array_reverse($data,true);
print_r($data);

编辑:使用您编辑后的答案,我得到了以下信息:$data=数组(1=>数组(1,"abc"),2=>数组(2,"def"));

$data = array_reverse($data,true);
foreach($data as $d){
    echo "id>".$d[0]." | val>".$d[1]."<br />";
}

将数据存储在数组中(while循环中)。之后,您可以使用array_reverse来反转项目顺序。

您还可以使用一个光标来迭代您的结果集-前后移动-使用类似PDO的东西-并且可能对每种其他类型的连接使用类似的变体:

光标定向

对于表示可滚动光标的PDOStatement对象,该值决定将哪一行返回给调用者。此值必须是PDO::FETCH_ORI_*常量之一,默认为PDO:::FETCH_ORI_NEXT。若要为PDOStatement对象请求可滚动光标,在使用PDO::prepare()准备SQL语句时,必须将PDO::ATTR_cursor属性设置为PDO::cursor_SCROLL。

但是使用array_reverse可能更简单。话虽如此,在查询中对数据进行排序将再次变得更简单(而且可能更高效)。

$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;
}