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

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

UTF-8版本

源码运行结果截图:

时间: 2024-12-20 16:02:09

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

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

将一个数据库中的数据导入另一个数据库(DB2) 我这里举得例子是使用的DB2数据库,其他数据库思路也是这样啦! 1.从db2 数据库中将表中的数据导入本地的excel中 export to d:\mytest.xls of del modified by nochardel coldel0x09 select * from IOUT_BUSI_YWDJMX_TEMP 2.在需要导入的数据库建立一个临时表 --创建临时表 CREATE TABLE NBADV.l_hzcitywa ( fhcode

把一个数据库中的数据导入另一个数据库中

use master go -- ============================================= -- Basic Create Database Template -- ============================================= IF EXISTS (SELECT * FROM master..sysdatabases WHERE name = N'lbNorthwind') DROP DATABASE lbNorthwind GO

利用AMP(Alibaba Migration Platfrom)神器轻松把Oracle数据库中的数据迁移到MySQL数据库

转载请注明出处: http://blog.csdn.net/guoyjoe/article/details/44926187 上传AMP包并解压:tar -jxvf amp.2.1.0.tar 启动AMP:nohup sh start.sh > /tmp/log.txt 1 & >2 1.我把AMP迁移工具部署到了192.168.1.8上,在192.168.1.8上也装了MySQL数据库,可以正常连接,如下: 2.配置AMP,如下 3.点保存并预检查,报错如下 目标库的大小写敏感设置 

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

数据库中的价格字段是 float 类型的,在 Laravel 中取出会出现这样的情况 数据库:71.9 -> 程序打印:72.0 数据库:75.2 -> 程序打印:75.3 在另外一个测试环境是没有问题的,请问是 PDO 要设置什么? PDO 拿出來的 Float 數據跟数据库中的数据不匹配 >> mysql 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/mysql/1010000007441481/PDO拿出來的Float數據跟数据库中的

MySQL 删除数据库中重复数据(以部分数据为准)

delete from zqzrdp where tel  in (select min(dpxx_id) from  zqzrdp  group by tel  having count(tel)>1); 执行,报错 异常意为:你不能指定目标表的更新在FROM子句.傻了,MySQL 这样写,不行,让人郁闷. 难倒只能分步操作,蛋疼 以下是网友写的,同样是坑爹的代码,我机器上运行不了. 1. 查询需要删除的记录,会保留一条记录.  代码如下 复制代码 select a.id,a.subject,

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

使用sqoop将MySQL数据库中的数据导入Hbase 前提:安装好 sqoop.hbase. 下载jbdc驱动:mysql-connector-java-5.1.10.jar 将 mysql-connector-java-5.1.10.jar 拷贝到 /usr/lib/sqoop/lib/ 下 MySQL导入HBase命令: sqoop import --connect jdbc:mysql://10.10.97.116:3306/rsearch --table researchers --h

solr4从mysql数据库中导入数据

实际项目中,我们需要把已存在于数据库中的数据导入到solr索引库中,solr给我们提供了一个非常简便的方式DIH,下面我们以mysql数据为例. 1.进入你的core(如collection1),新建一个目录lib. 2.拷贝mysql-connector-java-5.1.14.jar到新建的lib目录中. 3.从solr的解压文件目录中找到“E:\solrbase\example-DIH\solr\db\conf”下的db-data-config.xml文件到你的core(如collecti

用java向mysql数据库中插入数据为空

利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util.Scanner; import org.junit.Test;public class JDBCTest { //2).在测试方法testAAddStudent()中 //1.获取从控制台输入的Student对象:Student student=getStudentFromConsole(); /

Java实现Excel导入数据库,数据库中的数据导入到Excel

实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1.添加jxl.jar mysql-connector-java.1.7-bin.jar包到项目的lib目录下­ 2.Excel文件目录:D://book.xls 3.数据库名:javenforexcel 4.表名:stu 5.编写类:连接mysql的字符串方法.插入的方法.实体类­­ 表结构如下 : 连接数据库的工具类 package com.javen.db; import java.sql.Co

java更改数据库中的数据

不废话,上代码 1 package com.ningmeng; 2 3 import java.sql.*; 4 5 /** 6 * 1:更改数据库中的数据 7 * @author biexiansheng 8 * 9 */ 10 public class Test04 { 11 12 public static void main(String[] args) { 13 // TODO Auto-generated method stub 14 try { 15 Class.forName("