-2

奇妙な問題が発生しました。データベースに新しいエントリを追加するたびに、ID番号が高くなりますが、どういうわけかそれを低い番号と見なし、古いものの下に置きます。

そして、PHPでソートDESCすると、この順序も得られます。ここで何がうまくいかないのか知っている人はいますか?

私は$res = mysql_query("SELECT * FROM data ORDER BY 'id' DESC");それらを並べ替えるために使用し、写真と同じ順序になります。(なぜ私がここで反対票を投じられているのかわかりませんが、わかりました..)

写真: ここに画像の説明を入力

4

4 に答える 4

2

クエリは次のとおりです。

SELECT * FROM data ORDER BY 'id' DESC

string でソートして'id'います。引用符で囲まれていない場合は、構文が強調表示されていることに注意してください。これは、ランダムな順序でそれらを取得することを意味します。を取り外します'。列をエスケープするidつもりなら、バックティックを使用する必要があります。

SELECT * FROM data ORDER BY `id` DESC
于 2012-09-16T10:05:37.057 に答える
1

テーブルにデータを挿入する場合、新しい数値 (または最高の数値) が常に最下位の行にあるとは限りません。レコードをランダムに挿入します。ORDER BY句を使用して行を取得するときにソートできる唯一の方法は、例

SELECT *
FROM tableName
ORDER BY ID DESC

したがって、ID は数値であると仮定します。ID が文字列として格納されている場合は、数値に変換する必要があります。

SELECT *
FROM tableName
ORDER BY CAST(ID AS SIGNED) DESC

更新 1

そのはず

$res = mysql_query("SELECT * FROM data ORDER BY `id` DESC");

いいえ

$res = mysql_query("SELECT * FROM data ORDER BY 'id' DESC");

あなたがしたことはID、サーバーが文字列ではなく文字列として読み取るように強制する一重引用符で囲んだことですNumeric

于 2012-09-16T09:59:56.623 に答える
0

GUI Webインターフェースは、セッション管理にバグがある場合があるため(常にではない)、絶対に信頼しないでください。ただし、GUIWebインターフェースを使用してSQLクエリを実行できます。

1- SQLクエリを実行するには、ナビゲーションバーの[SQL]をクリックします。

2-表示されたボックスにSQLを入力します。

SELECT *
FROM tableName
ORDER BY ID DESC

3-「実行」をクリックします。

于 2012-09-16T10:10:15.553 に答える
0

句を使用していない場合ORDER BY、PHPMyAdmin の順序は一種のランダムです。実際、新しい行が古い行に置き換わる可能性があります。

ただし、PHPでどのようにソートDESCするのか興味があります。

于 2012-09-16T09:58:48.707 に答える