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のようなものを使用- および他のタイプの接続ごとにおそらく同様のバリエーション:

カーソル方向

スクロール可能カーソルを表す PDOStatement オブジェクトの場合、この値は呼び出し元に返される行を決定します。この値は PDO::FETCH_ORI_* 定数の 1 つである必要があり、デフォルトは 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 に答える