<?php
//替换数据库内容类
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版</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>本程序因为编码是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>

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

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

    PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. php从mysql数据库中取数据

    php从数据库中取数据  面向过程 <?php $server_name="localhost:3306"; //数据库服务器名称 $username="root& ...

  9. python往mysql数据库中写入数据和更新插入数据

    本文链接:https://blog.csdn.net/Mr__lqy/article/details/85719603 1. 连接mysql import pymysql db = pymysql.c ...

随机推荐

  1. jquery.dataTables列中内容居中问题?求解?

    .table > tbody > tr > td {  vertical-align: middle; }

  2. ZOJ 1610 Count the Colors【题意+线段树区间更新&&单点查询】

    任意门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 Count the Colors Time Limit: 2 ...

  3. [18/11/7] Java的基础概念

    java语言的优势是跨平台 ,计算机界的英语,是IT行业的第一大语言 特点是多线程 分布式 健壮性 面向对象 java和JavaScript的关系 雷锋和雷峰塔的关系 或卡巴斯基和巴基斯坦的关系有个基 ...

  4. maven的.m2文件夹

    安装完maven是没有.m2文件夹的. Maven缺省的本地仓库路径为${user.home}/.m2/repository 在linux中以.开头的文件夹都是隐藏的.当使用maven命令的时候,ma ...

  5. WPF学习笔记(7):DataGrid中数字自定义格式显示

    DataGrid中数据显示如下图,数据格式比较杂乱.希望达到以下要求:(1)所有数据保留两位小数:(2)超过1000的数字显示千分位:(3)如果数据为0,不显示. 首先想到用StringFormat进 ...

  6. hadoop核心逻辑shuffle代码分析-map端 (转)

    一直对书和各种介绍不太满意, 终于看到一篇比较好的了,迅速转载. 首先要推荐一下:http://www.alidata.org/archives/1470 阿里的大牛在上面的文章中比较详细的介绍了sh ...

  7. SpeedTree制作超真实老宅

  8. js 防抖 节流 JavaScript

    实际工作中,通过监听某些事件,如scroll事件检测滚动位置,根据滚动位置显示返回顶部按钮:如resize事件,对某些自适应页面调整DOM的渲染:如keyup事件,监听文字输入并调用接口进行模糊匹配等 ...

  9. oracle日常监控语句

    oracle常用的性能监控SQL语句 一.查询历史SQL: ---正在执行的SQL语句: select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT fro ...

  10. 你不知道的javaScript笔记(5)

    原生函数 常用的原生函数 String() Number() Boolean() Array() Object() Function() RegExp() Date() Error() Symbol( ...