0

私は以下の配列を持っています

  $titles=array("Dr.","Ms.","Mr.");

foreach ループの後、以下のクエリを作成します

SELECT * FROM `table` WHERE title = 'Dr.' or title = 'Ms.' or title = 'Mr.' ) group by sentences

から出力開始

Mr.Ms.Mr.Dr.

DRをPUTしたい。array() 内で順番に並んでいる Mr. よりもまずその Ms.

4

2 に答える 2

4

入力がサニタイズされている限りimplode、ステートメントを準備するために使用できます。

$stmt = 'SELECT * FROM `table` ';
$stmt .= "WHERE title = '" . implode("' OR title = '", $titles) . "'";

結果

SELECT * FROM `table` WHERE title = 'Dr.' OR title = 'Ms.' OR title = 'Mr.'

デモを見る

代わりに次を使用できますIN

$stmt = 'SELECT * FROM `table` ';
$stmt .= "WHERE title IN ('" . implode("', '", $titles) . "')";

結果

SELECT * FROM `table` WHERE title IN ('Dr.', 'Ms.', 'Mr.')

を修正する必要がありますGROUP BY。あなたはそれを正しく使用していません。

タイトルの順序を並べ替えたい場合は、次の方法を試してください。

ORDER BY
  CASE
    WHEN title = 'Dr' THEN 1
    WHEN title = 'Ms.' THEN 2
    WHEN title = 'Mr.' THEN 3
    ELSE 4
  END
于 2013-05-08T15:49:45.117 に答える