1

我是 SQL 新手,我目前有一个字符串数组,它们代表数据库中表的名称。我想在遍历表名时运行这样的查询:

$sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'";

但是,这不起作用,我读到使用上面的这种方法可能会出现 SQL 注入。

任何人都可以推荐一种解决此问题的方法,谢谢。

4

3 回答 3

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
}
于 2013-02-12T22:12:18.780 回答
0

对所有变量使用mysqli_real_escape_string函数(最好是$nameand $rank),它将转义任何可能导致 sql 注入的引号。

功能参考

于 2013-02-12T22:12:54.633 回答
-2

你是对的,你的方法很不安全。

浏览此列表并选择更适合您的:好的 PHP ORM 库?

于 2013-02-12T22:13:51.093 回答