1
我在WHERE子句中使用了一個相當複雜的預備語句,並且在一個點上我實際上需要具有一個更具體條件的相同語句。創建兩個不同的語句是一個糟糕的方法,因爲它們共享大部分查詢字符串,當我更新一個時,我將不得不更新另一個。到目前爲止,我嘗試使用這樣的:重複使用帶有可選條件的準備語句
SELECT columns
FROM tables
WHERE manyConditions AND (specificColumn = ? OR ? = NULL)
在這種情況下,我可以綁定一個任意參數,NULL來呈現特定條件沒用它不需要它($pdo->execute([/* ... */, -1, null])
)查詢,同時仍然能夠通過specificColumn
過濾當綁定一個適當的值和非NULL的東西時($pdo->execute([/* ... */, 'specific value', true])
)。
這是一種非常骯髒的方式來防止代碼重複,這迫使我在大多數情況下綁定兩個變量。
有沒有更好的方法來防止代碼重複?
請留下你爲什麼downvoting這個問題的一些建設性的意見 - 也許有一些改善它? –
不要傷心downvoting我有相同的經歷,我從來沒有得到任何答案... – JosMac
Downvoters你可以做的至少是評論 –