知识大全 如何利用PHP执行.SQL文件

Posted 文件

篇首语:冲天香阵透长安,满城尽带黄金甲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何利用PHP执行.SQL文件相关的知识,希望对你有一定的参考价值。

如何利用PHP执行.SQL文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

本篇文章是对使用PHP执行 SQL文件的实现代码进行了详细的分析介绍 需要的朋友参考下  

  demo php:

复制代码 代码如下: <?php /** * 读取 sql 文件并写入数据库 * @version demo php */ class DBManager     var $dbHost = ;     var $dbUser = ;     var $dbPassword = ;     var $dbSchema = ;     function __construct($host $user $password $schema)             $this >dbHost = $host;         $this >dbUser = $user;         $this >dbPassword = $password;         $this >dbSchema = $schema;         function createFromFile($sqlPath $delimiter = (;/n)|((;/r/n))|(;/r) $prefix = $menter = array( # ))             //判断文件是否存在         if(!file_exists($sqlPath))             return false;         $handle = fopen($sqlPath rb );           $sqlStr = fread($handle filesize($sqlPath));         //通过sql语法的语句分割符进行分割         $segment = explode(";" trim($sqlStr));         //var_dump($segment);         //去掉注释和多余的空行         foreach($segment as & $statement)                     $sentence = explode("/n" $statement);             $newStatement = array();             foreach($sentence as $subSentence)                             if( != trim($subSentence))                                     //判断是会否是注释                     $isComment = false;                     foreach($menter as $er)                                             if(eregi("^(" $er ")" trim($subSentence)))                                                     $isComment = true;                             break;                                                                 //如果不是注释 则认为是sql语句                     if(!$isComment)                         $newStatement[] = $subSentence;                                                           $statement = $newStatement;                 //对表名加前缀         if( != $prefix)                            //只有表名在第一行出现时才有效 例如 CREATE TABLE talbeName             $regxTable = "^[/`/ /"] [/_a zA Z]+[/_a zA Z ]*[/`/ /"] $";//处理表名的正则表达式             $regxLeftWall = "^[/`/ /"] ";             $sqlFlagTree = array(                     "CREATE" => array(                             "TABLE" => array(                                     "$regxTable" =>                                 )                         )                     "INSERT" => array(                             "INTO" => array(                                 "$regxTable" =>                             )                         )                     );             foreach($segment as & $statement)                             $tokens = split(" " $statement[ ]);                 $tableName = array();                 $this >findTableName($sqlFlagTree $tokens $tableName);                 if(empty($tableName[ leftWall ]))                                     $newTableName = $prefix $tableName[ name ];                                 else                     $newTableName = $tableName[ leftWall ] $prefix substr($tableName[ name ] );                                 $statement[ ] = str_replace($tableName[ name ] $newTableName $statement[ ]);                                    //组合sql语句         foreach($segment as & $statement)                     $newStmt = ;             foreach($statement as $sentence)                             $newStmt = $newStmt trim($sentence) "/n";                         $statement = $newStmt;                 //用于测试                //var_dump($segment);         //writeArrayToFile( data txt $segment);         //         self::saveByQuery($segment);         return true;         private function saveByQuery($sqlArray)             $conn = mysql_connect($this >dbHost $this >dbUser $this >dbPassword);         mysql_select_db($this >dbSchema);         foreach($sqlArray as $sql)                     mysql_query($sql);                        mysql_close($conn);         private function findTableName($sqlFlagTree $tokens $tokensKey= & $tableName = array())             $regxLeftWall = "^[/`/ /"] ";         if(count($tokens)<=$tokensKey)             return false;               if( == trim($tokens[$tokensKey]))                     return self::findTableName($sqlFlagTree $tokens $tokensKey+ $tableName);                 else                     foreach($sqlFlagTree as $flag => $v)                                if(eregi($flag $tokens[$tokensKey]))                                     if( ==$v)                                             $tableName[ name ] = $tokens[$tokensKey];                         if(eregi($regxLeftWall $tableName[ name ]))                                                     $tableName[ leftWall ] = $tableName[ name ] ;                                                 return true;                                         else                         return self::findTableName($v $tokens $tokensKey+ & $tableName);                                                                 return false;     function writeArrayToFile($fileName $dataArray $delimiter="/r/n")     $handle=fopen($fileName "wb");     $text = ;     foreach($dataArray as $data)             $text = $text $data $delimiter;         fwrite($handle $text); //测试 $dbM = new DBManager( localhost w f test ); $dbM >createFromFile( data sql null fff_ ); ?> cha138/Article/program/PHP/201311/21281

相关参考

知识大全 UNIX下让ORACLE定时执行*.sql文件

UNIX下让ORACLE定时执行*.sql文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  O

知识大全 三种php删除文件代码

下面我收藏了三php删除文件哦他可以利用unlink删除任何可删除的文件本程序要删除文件图片压缩文件等我们利用了几种方法来实例下面我收藏了三php教程删除文件哦他可以利用unlink删除任何可删除的文

知识大全 php防止sql注入的函数介绍

  具体用法  addslashes防止SQL注入  虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入还是建议大家加强中文防止SQL注入的检查addslashes的问题在于黑客可以用

知识大全 如何打开PHP文件,PHP文件怎么打开

如何打开PHP文件,PHP文件怎么打开?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  “php

知识大全 php是什么,php文件怎么打开

  很多没有基础的朋友经常会问php文件怎么打开其实PHP是一个网页脚本但不同于xml标签语言直接可以通过浏览器打开需要有PHP的运行环境才可以访问和打开文件如果只是编辑PHP打开文件只需要用记事本或

知识大全 PHP 文件编程综合案例-文件上传的实现

PHP文件编程综合案例-文件上传的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PHP文件

知识大全 用什么软件打开php文件

  php文件相信很多电脑老手也不知道吧?今天有电脑电脑百事网网友问了编辑这个问题“php文件怎么打开?”其实大家并非是需要去打开php文件多数只是因为下载东西错误的下载到成了网页文件主要是下载站中的

知识大全 在PHP中全面阻止SQL注入式攻击

在PHP中全面阻止SQL注入式攻击  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在本系列文章中

知识大全 PHP-Fcgi下PHP的执行时间设置方法

PHP-Fcgi下PHP的执行时间设置方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!昨天一个程

知识大全 PHP 计算页面执行时间

PHP计算页面执行时间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自己写了个计算页面执行时间