我有一个从数据库中检索值的代码。但我想以相反的顺序获取这些值。参见此示例
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;
}