0
假設我有一個包含30個與音樂流派對應的複選框(它提交給PHP表單處理程序)的表單。基於複選框構建SQL查詢
我有一個藝術家表,有一個流派領域。什麼是構建查詢的最佳實踐將沿着以下方式行事:
從藝術家中選擇姓名genreId = 1或genreId = 2 OR。 。 。等等。genreId是從複選框中選擇的。
我知道我可以在PHP中動態構建我的WHERE子句,但我習慣使用預處理語句和存儲過程。我該怎麼辦?
假設我有一個包含30個與音樂流派對應的複選框(它提交給PHP表單處理程序)的表單。基於複選框構建SQL查詢
我有一個藝術家表,有一個流派領域。什麼是構建查詢的最佳實踐將沿着以下方式行事:
從藝術家中選擇姓名genreId = 1或genreId = 2 OR。 。 。等等。genreId是從複選框中選擇的。
我知道我可以在PHP中動態構建我的WHERE子句,但我習慣使用預處理語句和存儲過程。我該怎麼辦?
你可能會想使用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) . ')';
確保你承認用戶可能提交表單不選擇任何複選框。 –
@Galway當然,甚至在您嘗試構建查詢之前,都應該進行驗證。 –
@MikeBrant好的。感謝男士們。就最佳實踐而言,這太糟糕了。永遠不會傷害問。 – Galway