2013-07-03 96 views
0

假設我有一個包含30個與音樂流派對應的複選框(它提交給PHP表單處理程序)的表單。基於複選框構建SQL查詢

我有一個藝術家表,有一個流派領域。什麼是構建查詢的最佳實踐將沿着以下方式行事:

從藝術家中選擇姓名genreId = 1或genreId = 2 OR。 。 。等等。genreId是從複選框中選擇的。

我知道我可以在PHP中動態構建我的WHERE子句,但我習慣使用預處理語句和存儲過程。我該怎麼辦?

回答

2

你可能會想使用IN()您的where子句是這樣的:

WHERE genreId IN (1,2,3) 

不幸的是,是不是真的有一個參數來利用這一良好的解決方案。你只需要去老派:

$query = 'SELECT ... WHERE genreId IN (' . implode(',', $genreId_array) . ')'; 

我想雖然你可以做這樣的事情建立一個參數化方法:

$query = 'SELECT ... WHERE genreId IN ('; 
$array_length = count($genreId_array); 
for ($i = 0; $i < $array_length; $i++) { 
    $query .= '?,'; 
} 
$query = rtrim(',',$query) . ')'; 
+0

確保你承認用戶可能提交表單不選擇任何複選框。 –

+0

@Galway當然,甚至在您嘗試構建查詢之前,都應該進行驗證。 –

+0

@MikeBrant好的。感謝男士們。就最佳實踐而言,這太糟糕了。永遠不會傷害問。 – Galway