如果我正在使用PDO预处理语句,并且我有这样的查询:
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注入的影响,但我想要确定。我注意到在一个教程中我看到他们确实绑定了值,即使它不是传递的变量,这让我想知道我是否做得对。
答案 0 :(得分:1)
不,在这种情况下,绑定不是必需的。 As stated by PHP.net,准备好的陈述有两个目的:
由于您在查询中对该值进行了硬编码,因此两者都不适用。查询保持不变,因此只需编译一次。并且没有用户输入粘贴到查询中,因此SQL注入是不可能的。 (只要你做绑定其他值,当然)
结论:您不必绑定0
,因为它不是变量。
答案 1 :(得分:1)
在这种情况下,绑定不是必需的,它不是变量。