Php 在表名数组上运行SQL查询

Php 在表名数组上运行SQL查询,php,sql,Php,Sql,我是SQL新手,目前有一个字符串数组,表示数据库中表的名称。我希望在循环表名时运行如下查询: $sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'"; 然而,这不起作用,我已经读到使用上面的这种方法可能会出现SQL注入 有人能推荐一种解决这个问题的方法吗,谢谢。这会给你一个大致的想法。为了解决SQL注入问题,我建议您使用PDO或其他库来研究准备好的查询 对所有变量(最好是$name和$rank)

我是SQL新手,目前有一个字符串数组,表示数据库中表的名称。我希望在循环表名时运行如下查询:

$sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'";
然而,这不起作用,我已经读到使用上面的这种方法可能会出现SQL注入


有人能推荐一种解决这个问题的方法吗,谢谢。

这会给你一个大致的想法。为了解决SQL注入问题,我建议您使用PDO或其他库来研究准备好的查询


对所有变量(最好是
$name
$rank
)使用
mysqli\u real\u escape\u string
函数,它将转义可能导致sql注入的任何引号


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


浏览下面的列表,选择对您更有效的方法:

这并不能回答问题。我假设,如果一个人知道sql注入,他应该知道循环。在这种情况下,我的答案比另外两个更好地回答了这个问题。我目前正在使用mysqli。这是否也适用?mysqli有自己的准备查询的方法。下面是关于将参数绑定到准备好的查询的文档中的一个示例:
$stmt=$mysqli->prepare(“插入CountryLanguage值(?,,,?)”
$stmt->bind_参数('sssd',$code,$language,$official,$percent)这应该有帮助:通过查看上面链接中的信息,我看到mysqli_real_escape_string函数用于与连接相关的变量。然而,在我的代码中,$name和$rank是从其他方法(解析json字符串的字段)派生出来的
foreach($tables as $tablename){
    $sql = "UPDATE $tablename SET name = '$name', id ='$id' WHERE rank = '$rank'";
    // execute query
}