Php MYSQL区间查询SQL注入

Php MYSQL区间查询SQL注入,php,mysql,Php,Mysql,我有一个简单的MYSQL查询: SELECT * FROM table WHERE date > now() - INTERVAL $hours HOUR $hours是一个PHP GET变量。在查询中使用该变量之前,是否必须对其进行任何检查以避免SQL注入,或者该变量是否足够安全?我使用PDO语句使用准备好的语句 看 可能您直接从$\u POST或$\u GET获取变量 $safe_variable=$_POST['user_input'] 像这样的东西会很好: $sth=$Db->d

我有一个简单的MYSQL查询:

SELECT * FROM table WHERE date > now() - INTERVAL $hours HOUR

$hours
是一个PHP GET变量。在查询中使用该变量之前,是否必须对其进行任何检查以避免SQL注入,或者该变量是否足够安全?我使用PDO语句

使用准备好的语句

可能您直接从$\u POST或$\u GET获取变量


$safe_variable=$_POST['user_input']

像这样的东西会很好:

$sth=$Db->dbh->prepare(“从'table'中选择*,其中日期>现在()-间隔:小时”)$sth->execute(数组(':hours'=>$hours',:secondThing'=>$variable))


这是一种让你放松的方法。这可能与您的代码不同,但执行和查询中的数组将是相同的(如果您使用PDO)。

准备好的语句就足够了。如果您直接替换到SQL字符串中,则存在注入的风险。@GordonLinoff是的。我直接替换。我可以将bind与这个变量一起使用吗?像
INTERVAL:hours
@MichaelSamuel。不可以。您可以绑定数字,但需要对间隔类型使用
case
语句。或者,只需在输入代码之前检查间隔类型是否有效。哦,对不起……忘记在查询中包含小时。类型是固定的:)我在问题中已经说过,我使用准备好的语句(PDO):)