我是SQL新手,我目前有一个字符串数组,表示数据库中表的名称。我希望在遍历表名时运行这样的查询:
$sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'";
然而,这不起作用,并且我已经读过,使用上述类型的方法可能会出现SQL注入。
任何人都可以推荐一种解决方法,谢谢。
答案 0 :(得分:2)
这应该给你一个大致的想法。为了解决SQL注入问题,我建议您使用PDO或其他库调查准备好的查询。 http://php.net/manual/en/pdo.prepared-statements.php
foreach($tables as $tablename){
$sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'";
// execute query
}
答案 1 :(得分:0)
对所有变量(最好是mysqli_real_escape_string
和$name
)使用$rank
函数,它将转义任何可能导致sql注入的引号。
答案 2 :(得分:-2)
你是对的,你的方法非常不安全。
浏览此列表并选择适合您的方式:Good PHP ORM Library?