gpt4 book ai didi

php - 尝试使用 PHP 动态生成和执行 DROP 语句

转载 作者:行者123 更新时间:2023-11-30 01:22:49 24 4
gpt4 key购买 nike

我有 php 代码,可以解析目录并生成 SQL 语句,该语句检查子目录名称是否作为特定数据库中的表存在,然后为目录中不存在的任何子目录名称生成 DROP TABLE 语句:

在 $DIR 代码的前面调用了目录。

$directories = glob($DIR . '/*' , GLOB_ONLYDIR);
$dir2 = str_replace( "$DIR/" , "" , $directories);
$dirlist = implode("', '",$dir2);
$sql = "SELECT CONCAT('DROP TABLE ', table_name, ';') FROM information_schema.TABLES WHERE table_schema = 'streamer1' AND table_name NOT IN ('$dirlist');";
echo "$sql";

这会在我的浏览器窗口中生成一条 SQL 语句。当我使用 mysql 手动运行 sql 语句时,我得到了未在文件夹中作为子目录名称找到的任何表名所需的 DROP TABLE 语句列表。

+----------------------------------------+
| CONCAT('DROP TABLE ', table_name, ';') |
+----------------------------------------+
| DROP TABLE jhtest; |
+----------------------------------------+
1 row in set (0.00 sec)

我想要完成的是获取这些结果并使用我的 php 代码在 mysql 中执行它们。我目前陷入了在 php 中返回结果,然后将每个结果作为 mysql 语句执行的阶段。

这是生成这些 drop 语句的正确方法吗?或者是否有更简单的方法来编辑我的 sql 语句以删除那些不在提供的列表中的表(通过使用 CONCAT 生成 drop 语句)?

最佳答案

然后就这样做:

[...]
$sql = "SELECT CONCAT('DROP TABLE ', table_name, ';') FROM information_schema.TABLES WHERE table_schema = 'streamer1' AND table_name NOT IN ('$dirlist');";

$result = mysql_query($sql, $connection);
while ($row = mysql_fetch_array($result))
mysql_query($row[0], $connection);

关于php - 尝试使用 PHP 动态生成和执行 DROP 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com