Php 从ip等于该ip的所有表中删除

Php 从ip等于该ip的所有表中删除,php,mysql,Php,Mysql,我的SQL数据库中有很多表,我想从其中的所有表中删除IP在一个语句/查询中与某个IP匹配的表。有没有办法快速完成 比如: DELETE FROM * tables where ip = '$ip'; 有办法做到这一点吗?像这样 $tables = ['table1','table2','table3']; foreach($tables as $table){ //DELETE FROM `$table` tables where ip = :ip; } 只需确保您使用的是预先准备好的

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

比如:

DELETE FROM * tables where ip = '$ip';
有办法做到这一点吗?

像这样

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

foreach($tables as $table){
  //DELETE FROM `$table` tables where ip = :ip;
}
只需确保您使用的是预先准备好的语句和“固定”的表名。永远不要将用户输入连接到sql中

想象一下这个
$ip=“1”或1=1”现在您的所有数据都已删除。又名sql注入

因为你无辜的质疑:

 DELETE FROM table where ip = '$ip'
变成:

  DELETE FROM table where ip = '1' OR 1=1
并且
1
始终等于
1

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

这可能只是您正在做的一件事,但是如果您打算保留代码,我仍然会使用准备好的语句。

像这样

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

foreach($tables as $table){
  //DELETE FROM `$table` tables where ip = :ip;
}
只需确保您使用的是预先准备好的语句和“固定”的表名。永远不要将用户输入连接到sql中

想象一下这个
$ip=“1”或1=1”现在您的所有数据都已删除。又名sql注入

因为你无辜的质疑:

 DELETE FROM table where ip = '$ip'
变成:

  DELETE FROM table where ip = '1' OR 1=1
并且
1
始终等于
1

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


这可能只是您正在做的一件事,但是如果您打算保留代码,我仍然会使用准备好的语句。

您不能用分号将它们分开吗

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

你不能用分号把它们分开吗

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

调查您提供的问题的细节。您可以在动态SQL的帮助下实现这一点

步骤1)在信息模式的帮助下,准备动态SQL以从表中删除记录。您将得到如下所示的动态SQL

从ColumnName='IPAddress'的表1中删除; 从表2中删除,其中ColumnName='IPAddress'


步骤2)借助Execute语句。运行动态SQL,这将删除该列中记录具有IP地址的表中的所有记录。

查看您提供的问题的详细信息。您可以在动态SQL的帮助下实现这一点

步骤1)在信息模式的帮助下,准备动态SQL以从表中删除记录。您将得到如下所示的动态SQL

从ColumnName='IPAddress'的表1中删除; 从表2中删除,其中ColumnName='IPAddress'


步骤2)借助Execute语句。运行动态SQL,这将删除该列中记录具有IP地址的表中的所有记录。

听起来像是表的设计问题。也许最好改变一下,没有一种自动方式可以同时处理所有表。您可以从
INFORMATION\u SCHEMA.tables
中获取表列表,并编写一个循环,为每个表生成
DELETE
查询。听起来像是表的设计问题。也许最好改变一下,没有一种自动方式可以同时处理所有表。您可以从
INFORMATION\u SCHEMA.tables
获取表列表,并编写一个循环,为每个表生成
DELETE
查询。大多数PHP MySQL API不允许多个查询。使用
mysqli\u multi\u query()
时,只有
mysqli
。大多数PHP MySQL API不允许多个查询。当您使用
mysqli\u multi\u query()
时,唯一的一个是
mysqli
。它不会帮助MySQL的PREPARE函数准备多个SQL语句<代码>从“选择1”准备stmt;选择2'将导致错误<代码>错误代码:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“选择2”附近要使用的正确语法。。此错误告诉我PREPARE只能处理一条SQL语句。这无助于MySQL的PREPARE函数无法准备多条SQL语句<代码>从“选择1”准备stmt;选择2'将导致错误<代码>错误代码:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“选择2”附近要使用的正确语法。。这个错误告诉我PREPARE只能处理一条SQL语句。