2016-05-31 16 views
1

mySQLデータベースのcolumn_xには、PHP配列内に存在する可能性のある値が含まれています。php配列のSqlクエリの優先順位付けの値

データベースにクエリを行い、column_xの値がPHP配列に存在する行の優先順位を付けたいとします。

私の最初のアイデアは、column_yをphp配列にcolumn_xが存在する場合は1、そうでない場合は0、次にORDER BY column_y DESCを選択することでした。これは可能ですか?もしそうなら、私はどうすればそれについて行きますか?または、これについてもっと良い方法がありますか?

ありがとうございます!

答えて

0

ORDER BY column_x IN (list of values) DESCを使用できます。条件が真の場合、値は1、それ以外の場合は0です。

$array = array(1, 3, 4, 6); 
$str = implode(', ', $array); 

$sql = "SELECT * FROM yourTable 
     ORDER BY column_x IN ($str) DESC"; 

値がユーザー入力に由来する場合は、SQLに挿入する前にその値をサニタイズしてください。

+0

ありがとうございます!これはまさに私が必要としていたものです。 – GoldenLab88

+0

2つのグループ内の順序を制御するには、さらに「ORDER BY」にパラメータを追加する必要があります。さもなければ、データベースはそれらを任意に発注します。 – Barmar

+0

私のコードの中に空白の行を最後まで強制しません。 – Barmar

関連する問題