2013-12-13 220 views
4

如果我使用的是PDO準備語句,我有這樣的查詢多個條件:PDO預處理語句在WHERE子句

SELECT cat_name, cat_id_PK, cat_amount 
FROM categories 
WHERE month=? AND is_recurring = '0' 
ORDER BY cat_name ASC; 

$results->bindValue(1, $cur_month); 

我應該也可以結合is_recurring條款的價值? '0'是硬編碼的,我不認爲這會讓我容易受到SQL注入的影響,但我想要求確定。我在一篇教程中注意到,我看着他們確實綁定了這個值,即使它不是一個被傳遞的變量,這讓我懷疑我是否做得對。

+3

我沒有在0左右的引號中看到感,但一般 - 這是好的,你不需要綁定常量值 –

+1

不需要綁定它是沒有必要的 – 2013-12-13 01:21:54

+1

@Dagon - 如果你讓你的迴應成爲一個口水,我會給你信貸。 – hyphen

回答

1

在這個實例綁定是沒有必要的,它不是一個變量。

1

不,在這種情況下綁定是沒有必要的。 As stated by PHP.net,準備語句一舉兩得:

  1. 查詢只需要進行一次解析,因此運行速度更快
  2. 他們防止SQL注入

因爲您在查詢硬編碼該值,兩者都不適用。查詢保持不變,所以只需編譯一次。並且沒有用戶輸入粘貼到查詢中,所以SQL注入是不可能的。 (只要你綁定其他價值,當然)

結論:您不必綁定0,因爲它不是變量。