<?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. echarts固定柱子宽度(barWidth)

    series: [            {                name: '',                yAxisIndex: 0,                type: ' ...

  2. 20165322 2017-2018-2《Java程序设计》课程总结

    20165322 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:做中学learning by doing个人感想 预备作业 ...

  3. POJ 3070 矩阵快速幂

    题意:求菲波那切数列的第n项. 分析:矩阵快速幂. 右边的矩阵为a0 ,a1,,, 然后求乘一次,就进一位,求第n项,就是矩阵的n次方后,再乘以b矩阵后的第一行的第一列. #include <c ...

  4. 【iOS】那些年,遇到的小坑

    'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second ...

  5. ids for this class must be manually assigned before calling save():

    Caused by: javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: i ...

  6. centos7下javac:未找到命令的问题

    在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java    会提示未找到指令,但用java -verison测试环境变量 ...

  7. <body> 中的 JavaScript 函数

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. Object Detection with Discriminatively Trained Part Based Models

    P. Felzenszwalb, R. Girshick, D. McAllester, D. RamananObject Detection with Discriminatively Traine ...

  9. 初学oracle遇到些小麻烦

    前段时间学习了Oracle数据库,在超级用户sys下运行一些基本语句的时候都没有发现有什么问题,但是却发现不能执行删除字段的的命令,老师检查说可能是权限不够,但是在授权之后依旧不能完成该语句,所以就另 ...

  10. 02-第一个iOS程序-开发步骤

    打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...