如有疑问,加群交流:646104701

源码运行结果截图:

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

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

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

PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)的更多相关文章

  1. PDO 拿出來的 Float 數據跟数据库中的数据不匹配

    数据库中的价格字段是 float 类型的,在 Laravel 中取出会出现这样的情况 数据库:71.9 -> 程序打印:72.0 数据库:75.2 -> 程序打印:75.3 在另外一个测试 ...

  2. 在MongoDB数据库中查询数据(上)

    在MongoDB数据库中查询数据(上) 在MongoDB数据库中,可以使用Collection对象的find方法从一个集合中查询多个数据文档,find方法使用方法如下所示: collection.fi ...

  3. 将一个数据库中表的数据导入另一个数据库(DB2)

    将一个数据库中的数据导入另一个数据库(DB2) 我这里举得例子是使用的DB2数据库,其他数据库思路也是这样啦! 1.从db2 数据库中将表中的数据导入本地的excel中 export to d:\my ...

  4. mysql数据库中插入数据INSERT INTO SET的优势

    往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...

  5. Solr 07 - Solr从MySQL数据库中导入数据 (Solr DIH的使用示例)

    目录 1 加入数据导入处理器的jar包 2 加入数据库驱动包 3 配置solrconfig.xml文件 3.1 配置lib标签 - 加入驱动jar包 3.2 配置requestHandler标签 - ...

  6. 使用sqoop将MySQL数据库中的数据导入Hbase

    使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-con ...

  7. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  8. PHP MySQL Delete删除数据库中的数据

    PHP MySQL Delete DELETE 语句用于从数据库表中删除行. 删除数据库中的数据 DELETE FROM 语句用于从数据库表中删除记录. 语法 DELETE FROM table_na ...

  9. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  10. 使用grabit分析mysql数据库中的数据血缘关系

    使用grabit分析mysql数据库中的数据血缘关系 Grabit 是一个辅助工具,用于从数据库.GitHub 等修订系统.bitbucket 和文件系统等各种来源收集 SQL 脚本和存储过程,然后将 ...

随机推荐

  1. js的数组操作 splice

    原文:点击打开链接 1.作用:从指定位置删除部分元素并增加新的元素                1.1.该方法返回值是被删除的元素组成的数组                1.2.splice是直接 ...

  2. C#加载dll 创建类对象

    //加载dll 创建类对象string sqlightAssembly = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "syst ...

  3. APK软件反编译 去广告

    具体步骤: 1.下载 apktool 下载地址:https://code.google.com/p/android-apktool/downloads/list 2.通过apktool 反编译apk. ...

  4. 大白话系列之C#委托与事件讲解(一)

    从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个 ...

  5. asp.net MVC 帮助助手和函数( @helper @functions)

    asp.net Razor 视图具有.cshtml后缀,可以轻松的实现c#代码和html标签的切换,大大提升了我们的开发效率.但是Razor语法还是有一些棉花糖值得我们了解一下,可以更加强劲的提升我们 ...

  6. prtg

    prtg http://www.paessler.com/prtg/features prtg的sensor技术 数据库监视 Flexible Alerting 9 notification tech ...

  7. 如何用js检查浏览器是否安装flash插件

    <script type="text/javascript" language="JavaScript"> //Powered By smvv @h ...

  8. kaptcha随机验证码的使用详解,超实用

    效果图: 官方地址:https://code.google.com/p/kaptcha/w/list 1.把下载的kaptcha-2.3.2.jar添加到lib中 2.配置web.xml增加servl ...

  9. python中保留两位小数

    今天写程序的时候碰到了一个问题关于如何控制浮点数只显示小数点后两位,正常的想法是用round函数,例如 round(a, 2),但是在面对下面的问题时候round就不太好用了 >>> ...

  10. 如何处理JSON数据中含有双引号

    {"quality": "B"A"D"} 实际上要 value.replace("\"","\\\& ...