zoukankan      html  css  js  c++  java
  • PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

    如有疑问,加群交流:646104701

    源码运行结果截图:

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

    <?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{
    	 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- 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

  • 相关阅读:
    Jackson Annotation Examples
    Java 8 Stream API说明
    Spring Enable* 注解
    1568: [JSOI2008]Blue Mary开公司
    BZOJ1558: [JSOI2009]等差数列
    BZOJ3155: Preprefix sum
    BZOJ4552 [Tjoi2016&Heoi2016]排序
    BZOJ4653 [Noi2016]区间
    BZOJ4487 [Jsoi2015]染色问题
    Luogu2664 树上游戏
  • 原文地址:https://www.cnblogs.com/phpyangbo/p/4904698.html
Copyright © 2011-2022 走看看