将变量插入查询中

时间:2014-01-30 15:06:27

标签: mysql sql input prepared-statement

我知道准备好的陈述,但我的问题有点不同。

让我们假设我们遇到以下情况:变量$table 来自外部来源,即它只是一个字符串变量硬编码到脚本中

if($i == 1)
    $table = "students";
else if($i == 2)
    $table = "lecturers";

$sql = "select * from ".$table." where attending = 1";
$db->exec($sql);
//etc

我的问题:如上例所示,将$table变量包含在查询中是否安全?据我所知,我们应该只为用户输入数据使用预准备语句,对吗?如果没有,请纠正我。

1 个答案:

答案 0 :(得分:1)

如果您没有收到用户提供的变量内容,则可以安全地使用SQL注入。但是,出于效率原因,您可以使用准备好的语句。这样,语句只被解析一次,而不是每次都被解析。有关更多信息,请阅读:

http://dev.mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html