随笔 - 270  文章 - 0  评论 - 30  阅读 - 61万

PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

如有疑问,加群交流:646104701

源码运行结果截图:

 

PHP批量替换MySql数据库内容 UTF-8 1.0版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<?php
//声明
//1、本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用;
//2、源码开发者:杨波;
//3、源码开发者联系QQ:773003231;
//4、源码开发者博客:http://www.cnblogs.com/phpyangbo/;
//5、源码开放性:任何人都可以随意更改或使用本源码,本源码为开源并免费使用,不存在版权。
 
//替换数据库内容类
class replace{
    public $dbAddress//数据库地址
    public $dbUser;     //数据库用户名
    public $dbPwd;      //数据库密码
    public $dbName;     //数据库名称
    public $dbPort;     //数据库端口
    public $keywords;   //需要替换的关键字
    public $result_keywords;        //替换成什么
     
    //数据库连接
    public function dbConnect($dbAddress,$dbUser,$dbPwd,$dbName,$dbPort=''){
        if(empty($dbPort)){
            $dbPort =   '3306';
        }
        $this->dbAddress =   $dbAddress;
        $this->dbUser        =   $dbUser;
        $this->dbPwd     =   $dbPwd;
        $this->dbName        =   $dbName;
        $this->dbPort        =   $dbPort;
        //数据库连接
        $dbCon = mysql_connect($dbAddress.':'.$dbPort,$dbUser,$dbPwd);
        //数据库连接验证
        if($dbCon){
            //数据库连接成功
            //指定数据库
            $assign =   mysql_select_db($dbName,$dbCon);
            if($assign){
                mysql_query("set names 'utf8'"); //设置要使用的字符集
                return array('return'=>true,'ps'=>'数据库连接成功');
            }
            else{
                return array('return'=>false,'ps'=>'指定数据库失败');   
            }
        }
        else{
            //数据库连接失败
            return array('return'=>false,'ps'=>'数据库连接失败:'.mysql_error());    
        }
    }
     
    //查询所有表
    public function queryTable(){
        $rs = mysql_query("SHOW TABLES FROM ".$this->dbName);
        $tables = array();
        while ($row = mysql_fetch_row($rs)) {
            $tables[] = $row[0];
        }
        mysql_free_result($rs);
        return $tables;
    }
     
    //查询所有带关键字的数据并替换
    /*
        table   数据库中的所有表名数组
        keywords    查询的关键字
        result  要替换成什么
    */
    public function queryReplace($table,$keywords='',$result_keywords=''){
        $this->keywords  =   $keywords;
        $this->result_keywords   =   $result_keywords;
        $arr    =   array();    //装载返回信息
        $index  =   1;  //自增值
         
        //循环所有表
        foreach($table as $key=>$v){
            $result =   mysql_query('select * from '.$v);
             
            for ($i=0;$i<mysql_num_fields($result);$i++){
                $fieldName = mysql_field_name($result,$i);
                //到这里,数据库名称是  $this->dbName  表名是 $v  字段名是  $fieldName
                $fieldResult    =   mysql_query('select '.$fieldName.' from '.$v);
                while($fieldRow =   mysql_fetch_array($fieldResult)){
                    //判断该字段中的数据内容是否存在将要替换的关键字
                    $fieldValue =   $fieldRow[$fieldName];
                    if(strpos($fieldValue,$keywords) !== false){
                        //如果存在就继续执行替换
                        $replaceBack    =   str_replace($keywords,$result_keywords,$fieldValue);
                        //更换数据
                        if(mysql_query('update '.$v.' set '.$fieldName.'="'.$replaceBack.'" where '.$fieldName.'="'.$fieldValue.'"')){
                            $arr[$index]["dbName"]  =   $this->dbName;
                            $arr[$index]["tableName"]   =   $v;
                            $arr[$index]["fieldName"]   =   $fieldName;
                            $index++;
                        }
                    }
                }
            }
        }
        return $arr;
    }
}
 
//程序逻辑
$replace    =   new replace();  //实例化类
$steps  =   $_GET["steps"]; //执行步骤
//dbSet数据库信息设置
//detection检测
if(empty($steps)){
    $steps  =   'dbSet';   
}
if($steps=='detection'){
    $dbAddress  =   $_POST["dbAddress"];
    $dbUser     =   $_POST["dbUser"];
    $dbPwd      =   $_POST["dbPwd"];
    $dbName     =   $_POST["dbName"];
    $dbPort     =   $_POST["dbPort"];
    $keywords   =   $_POST["keywords"];
    $result_keywords        =   $_POST["result_keywords"];
    if(empty($dbAddress) || empty($dbUser) || empty($dbPwd) || empty($dbName) || empty($dbPort) || empty($keywords)){
        die("带星号的值必须填写");
    }
    $db =   $replace->dbConnect($dbAddress,$dbUser,$dbPwd,$dbName,$dbPort);
    $queryTable =   $replace->queryTable();
}
//以下为HTML
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>批量替换MySql数据库内容 UTF-8 1.0版 - 作者:杨波 联系QQ:773003231</title>
<style>
*{margin:0;padding:0;font-size:12px;}
.box{
    width: 300px;
    padding: 20px;
    border: 1px solid #eee;
    margin: 0 auto;
    margin-top: 150px;
    background-color: #fcfcfc;
}
h1{
    font-size: 16px;
    line-height: 40px;
    font-weight: bold;
    color: #333;
}
h2{
    line-height: 25px;
    font-weight: normal;
    color: #999;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    border-bottom-color: #eee;
    margin-bottom: 15px;
}
p{
    min-height: 30px;
}
p input{
    border: 1px solid #ccc;
    padding-top: 3px;
    padding-right: 5px;
    padding-bottom: 3px;
    padding-left: 5px;
}
a{
    color: #03F;
}
span{
    line-height: 25px;
    color: #F00;
}
</style>
</head>
 
<body>
<div class="box">
  <h1>批量替换MySql数据库内容 UTF-8 1.0版</h1>
  <h2>作者:杨波  联系QQ:773003231  本程序因为编码是UTF-8所以只支持此类型编码的数据库替换,如果您是其它类型的数据库请修改本源码</h2>
  <?php if($steps=='dbSet'){?>
  <form id="form1" name="form1" method="post" action="?steps=detection">
    <p>数据库地址:<input type="text" name="dbAddress" value="localhost" />  *
    <p>数据库用户:<input type="text" name="dbUser" />  *
    <p>数据库密码:<input type="text" name="dbPwd" />  *
    <p>数据库名称:<input type="text" name="dbName" />  *
    <p>数据库端口:<input type="text" name="dbPort" value="3306" />  *
    <p>需要替换的关键字:<input type="text" name="keywords" />  *
    <p>替换成什么关键字:<input type="text" name="result_keywords" />
    <p><span>注意:此操作不可撤销,进入下一步之前,请您先备份将要执行替换操作的数据库,如果您进入下一步,造成的任何后果,作者不承担任何责任,此源码仅用于学习交流,请勿用于任何商业使用</san>
    <p><input type="submit" name="button" id="button" value=" 开始替换 " style="margin-left:90px;margin-top:30px;"/>
  </form>
  <?php }else if($steps=='detection'){?>
  <p>数据库状态:<?=$db['ps']?>
  <p>正在替换...
  <p>替换完成</p>
  <p>共替换:<?=count($replace->queryReplace($queryTable,$keywords,$result_keywords))?>次
  <p><a href="?">返回上一步</a></p>
  <?php }?>
</div>
</body>
</html>

本文出自:http://www.cnblogs.com/phpyangbo/p/4904698.html

posted on   鱼塘总裁  阅读(3743)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示