0

PHPのIDのリストがあります。例えば:

$id = (4,6,3,2,5,1)

このようなクエリを実行すると、次のようになります。

$query = mysql_query("SELECT * FROM table WHERE ID IN ($id)");

必要な結果を取得しますが、アイテムは挿入順に返されます。

代わりに、配列で指定された順序で結果を取得したいと思います。

information 4, information 6, information 3, information 2, information 5, information 1 

どうやってやるの?

みんなありがとう!解決策はORDERBYFIELD(ID、$ id)です。

4

4 に答える 4

3

これを試して

$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY FIELD(ID,$id) ";

あなたはこれを見ることができますhttp://marco-pivetta.com/mysql-custom-sorting-rule-mysql/

于 2013-03-23T16:36:23.520 に答える
1
$query = "SELECT * FROM table WHERE ID IN ($id) ORDER BY ";

foreach ($id as $i) {
   $query .= "ID = $i,";
}
$query = mysql_query(rtrim($query, ','));

コードはインジェクションに対して脆弱です。PDOまたはmysqliで適切にパラメーター化されたクエリを使用する必要があります。

于 2013-03-23T16:35:24.693 に答える
1
$query="SELECT * FROM table WHERE ID IN ($id) ORDER BY FIND_IN_SET(ID,$id) DESC";

これもチェックしてください

IN()を使用し、並べ替えなしでクエリを選択します

于 2013-03-23T16:36:00.287 に答える
1

これで使用できますFIELD

SELECT * 
FROM table 
WHERE ID IN (4,6,3,2,5,1)
ORDER BY FIELD(ID, 4,6,3,2,5,1)
于 2013-03-23T16:36:46.823 に答える