php sql输出,php 导出sql文件

//action中的代码

$sql = 'show tables';          //指定数据库所有的表

$connection=Yii::app()->db;

$command=$connection->createCommand($sql);

$queryTables = $command->query();

$tables = array();

foreach ($queryTables as $eachTable){

if(strpos($eachTable['Tables_in_'.Func::DB_NAME], 'view')===false){

array_push($tables, $eachTable['Tables_in_'.Func::DB_NAME]);

}

}

sort($tables);

//前台页面的显示

全选/全不选

下载sql文件

//导出的sql文

public function actionDownloadSql(){

//需要导出的表

$tables = $_GET['tables'];

$arrTables = explode(',', $tables);

$allSql = '';

foreach($arrTables as $table){

//创建表的查询

$sql = 'SHOW CREATETABLE '.$table;   //导出创建表的sql语句

$connection=Yii::app()->db;

$command=$connection->createCommand($sql);

$queryResult = $command->query();

foreach($queryResult as $each){

$createSql=str_replace('CREATE TABLE','CREATE TABLE IF NOT EXISTS',$each['Create Table']);

}

//查询表的结构

$sql = 'DESCRIBE'.$table;    //查询表的结构

$connection=Yii::app()->db;

$command=$connection->createCommand($sql);

$queryColumn = $command->query();

$tableColumn = array();

foreach ($queryColumn as $each){

array_push($tableColumn, '`'.$each['Field'].'`');

}

//查询表内的数据

$sql = "select * from ".$table;

$connection=Yii::app()->db;

$command=$connection->createCommand($sql);

$queryResult = $command->query();

$tableData = array();

foreach($queryResult as $each){

$newEach = array();

foreach ($each as $val){

array_push($newEach, "'".$val."'");

}

array_push($tableData, "\n(".(implode(',', $newEach)).")");

}

$insertSql = " INSERT INTO `".$table."` (".(implode(",", $tableColumn)).") VALUES ".(implode(",",$tableData));

$allSql.= $createSql.";\n".$insertSql."\n";

}

header("Content-Type:text;");

header("Content-Disposition: p_w_upload; filename=usst".'.sql');

header("Pragma:no-cache");

header("Expires:0");

echo $allSql."\n";

exit;

}

难点:查询创建表的sql语句,查询表的结构,最后组装成sql文。

前台页面把数据库中所有的表显示出来,选择需要导出的表,然后进行导出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值