批量查询并替换数据库中指定内容的PHP脚本

2024-07-31

批量查询并替换数据库中指定内容的PHP脚本,可随意保存为1.PHP等,放置在网站目录,用浏览器访问:


<?php

// 数据库连接配置

$servername = "localhost";

$username = "root";

$password = "your_password"; // 替换为你的数据库密码

$dbname = "your_database"; // 替换为你的数据库名称

$search = "aaa.cn"; // 你要替换的原内容或域名

$replace = "bbb.com"; //替换为新的内容或域名


// 创建数据库连接

$conn = new mysqli($servername, $username, $password, $dbname);


// 检查连接是否成功

if ($conn->connect_error) {

    die("连接失败: " . $conn->connect_error);

}


// 从 COLUMNS.sql 中提取表和字段信息

// 这里我们直接查找所有表和字段的例子

$sql = "SELECT TABLE_NAME, COLUMN_NAME

        FROM INFORMATION_SCHEMA.COLUMNS

        WHERE TABLE_SCHEMA = '$dbname'

        AND DATA_TYPE IN ('char', 'varchar', 'text', 'mediumtext', 'longtext')";


$result = $conn->query($sql);


// 创建或覆盖替换命令的 SQL 文件

$file = fopen("replace_commands.sql", "w");// 这里是查询结果保存的SQL文件,需要加上保存路径,如和本PHP脚本同网站目录,PHP脚本用网站地址打开运行。


if ($result->num_rows > 0) {

    while ($row = $result->fetch_assoc()) {

        $table = $row['TABLE_NAME'];

        $column = $row['COLUMN_NAME'];


        // 生成替换命令

        $sql_command = "UPDATE `$table` SET `$column` = REPLACE(`$column`, '$search', '$replace') WHERE `$column` LIKE '%$search%';\n";

        fwrite($file, $sql_command);

    }

} else {

    echo "没有找到结果";

}


fclose($file);

$conn->close();


echo "SQL更新命令已生成,并保存到 replace_commands.sql 文件中";

?>


注意:

使用本PHP脚本运行得到保存的SQL查询结果文件后,在需要操作的数据库打开后,使用phpmysql的SQL命令工具,再点击导入此SQL文件即可(导入前请查看此SQL查询结果文件是否正确)

阅读4
分享
写评论...