1

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

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 一样使用查询。所以我可以在 PHP End 控制它吗?

4

4 回答 4

5
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 = array(1 => array(1, "abc"), 2 => array(2, "def"));

$data = array_reverse($data,true);
foreach($data as $d){
    echo "id>".$d[0]." | val>".$d[1]."<br />";
}
于 2012-09-05T13:36:06.707 回答
4

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

于 2012-09-05T13:36:19.650 回答
1

您还可以使用游标来遍历您的结果集 - 向后和向前移动 - 使用PDO之类的东西- 并且可能对于其他类型的连接可能有类似的变化:

cursor_orientation

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

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

于 2012-09-05T13:40:47.343 回答
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;
}
于 2012-09-05T14:05:48.490 回答