2013-05-08 101 views
0

我已經和arrray低於創建MySQL查詢使用PHP數組

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

foreach循環後,我從

先生 女士創建以下

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

輸出開始查詢 Mr. Dr.

I wan t來放棄DR。首先,女士比先生是在秩序裏面()

回答

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.' 

See a demo

您也可以使用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 
+0

仍然不是爲了 SELECT * FROM 'table' WHERE標題 IN( '博士', '女士', '先生' ) LIMIT 0,30個 – 2013-05-08 16:14:12

+0

@MamasPlodos看我的編輯 – Kermit 2013-05-08 16:26:26

0

您可以在聲明,易於閱讀嘗試

SELECT * 
FROM `urls` 
WHERE `id` 
IN (1, 2, 4) 
ORDER BY `urls`.`id` ASC 
LIMIT 0 , 30