从ip等于ip

时间:2017-12-23 09:52:02

标签: php mysql

我的SQL数据库中有很多表,我想从中删除所有表,其中IP与一个语句/查询中的某个IP匹配。有没有办法快速完成?

类似的东西:

DELETE FROM * tables where ip = '$ip';

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:2)

喜欢这个

$tables = ['table1','table2','table3'];

foreach($tables as $table){
  //DELETE FROM `$table` tables where ip = :ip;
}

绝对确定您使用的是预准备语句和“预制”表名。切勿将用户输入连接到您的sql。

想象一下$ip = "1' OR 1=1";现在您的所有数据都已被删除。 AKA sql Injection。

因为你的无辜查询:

 DELETE FROM table where ip = '$ip'

变为:

  DELETE FROM table where ip = '1' OR 1=1

AND 1始终等于1

如果在查看查询时看不到放入的数据,请使用预准备语句。因为,你永远不知道什么时候你会重新编写一段代码,如果从一开始就没有完成,你就会为自己设置很多麻烦。

这可能是你正在做的一次性事情,但如果你打算留下代码,我仍然会使用准备好的陈述。

答案 1 :(得分:0)

难道你不能用分号分隔它们吗?

DELETE FROM table1 WHERE id = 1;
DELETE FROM table2 WHERE id = 1;
DELETE FROM table3 WHERE id = 1;

答案 2 :(得分:0)

查看您提供的问题的详细信息。您可以在Dynamic SQL的帮助下完成此操作。

步骤1)在information_schema的帮助下,准备动态SQL以从表中删除记录。您将获得如下的动态SQL

从table1中删除ColumnName =' IPAddress&#39 ;; 从table2中删除ColumnName =' IPAddress';

步骤2)在Execute Statement的帮助下。运行该动态SQL,这将删除那些记录在该列中具有IP地址的表中的所有记录。