我知道准备好的陈述,但我的问题有点不同。
让我们假设我们遇到以下情况:变量$table
不来自外部来源,即它只是一个字符串变量硬编码到脚本中
if($i == 1)
$table = "students";
else if($i == 2)
$table = "lecturers";
$sql = "select * from ".$table." where attending = 1";
$db->exec($sql);
//etc
我的问题:如上例所示,将$table
变量包含在查询中是否安全?据我所知,我们应该只为用户输入数据使用预准备语句,对吗?如果没有,请纠正我。
答案 0 :(得分:1)
如果您没有收到用户提供的变量内容,则可以安全地使用SQL注入。但是,出于效率原因,您可以使用准备好的语句。这样,语句只被解析一次,而不是每次都被解析。有关更多信息,请阅读:
http://dev.mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html