ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用して .SQL ファイルを実行する方法_PHP チュートリアル

PHP を使用して .SQL ファイルを実行する方法_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:00:18
オリジナル
988 人が閲覧しました

demo.php:

コードをコピーします コードは次のとおりです:

/**
* SQL ファイルを読み取り、データベースに書き込みます
* @バージョン 1.01 Demon.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;
'、$ prefix =' '、$ commenter = array('# '、' - '))= fopen($ sqlpath、' rb ');
$ newStatement =comment
$ iscomment( "^("。$ comer。 ")"、trim($ subsentence))
xTable = "^[/` /'/"]{0,1}[/_a-zA-Z]+[/_a- zA-Z0-9]*[/`/'/"]{0,1 }$";//処理テーブル 名前付き正規表現
$regxLeftWall = "^[/`/'/"]{1}";

$sqlFlagTree = (
" CREATE" "TABLE" => array(
" $regxTable" => 0
"INTO" => 配列(
" regxTable" => 0
)
)

foreach($segment as & $statement)
findTableName($sqlFlagTree,$toケンス、0 , $ tableename);

if (EMPTY ($ tablename ['leftwall'])
{
$ newtablename = $ prefix. $ Tablename ['name']; blename = $ tablename [ 'leftWall'].$prefix.substr ($tableName['name'],1);
      
//组合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;
}

プライベート関数 saveByQuery($sqlArray)
{
$conn = mysql_connect($this->dbHost, $これ- >dbUser,$this->dbPassword);

mysql_select_db($this->dbSchema);

foreach($sqlArray as $sql)
{
mysql_query ($sql);
}
mysql_close($conn );
}

プライベート関数 findTableName($sqlFlagTree,$tokens,$tokensKey=0,& $tableName = array())
{
$regxLeftWall = "^[/`/'/"]{1}";

if(count($tokens)<=$tokensKey)
falseを返します。      

if('' == trim($tokens[$tokensKey]))
{
return self::findTableName($sqlFlagTree,$tokens,$tokensKey+1,$tableName);
}
else
{
foreach ($sqlFlagTree as $flag => $v)
{
if(eregi($flag,$tokens[$tokensKey]))
{
if(0==$v)
{
$tableName['name' ] = $tokens[$tokensKey];

if(eregi($regxLeftWall,$tableName['name']))
{
$tableName['leftWall'] = $tableName['name']{0};
}

trueを返します;
}
$ handle = fopen($ filename、 "wb");

$ text = ''; )
{
$text = $text.$data.$delimiter;
}
fwrite($handle,$text);
}
//Test
$dbM = new DBManager('localhost','w01f',' 123456',' test');
$dbM->createFromFile('data.sql',null,'fff_');
?>



data.sql:

-- phpMyAdmin SQL ダンプ
- - バージョン 2.11。3
-- http://www.phpmyadmin.net
--
-- ホスト: localhost
-- 生成日: 2008 年 8 月 20 日 12:09
-- サーバー バージョン: 5.0.51
- - PHP バージョン: 5.2.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- データベース: `newysh`--
------- -- ------------------------------------
--
-- テーブル構造 `allowed`
- -
CREATE TABLE `allowed` (
`bhash` blob NOT NULL,
`bname` varchar(255) 文字セット utf8 NOT NULL,
PRIMARY KEY (`bhash`(20))
) ENGINE=MyISAM DEFAULT CHARSET= gb2312 ROW_FORMAT=DYNAMIC;
--
-- テーブル `allowed` 内のデータをエクスポートします
--
-------------------------- -- ----------------------------------
--
-- テーブル構造 `allowed_ex`
--
CREATE TABLE `allowed_ex ` (
`bhash` blob NOT NULL,
`badded` datetime NOT NULL,
`bsize` bigint(20) unsigned NOT NULL,
`bfiles` int(10) unsigned NOT NULL,
PRIMARY KEY (`bhash`( 20))
) ENGINE=MyISAM DEFAULT CHARSET=gb2312 ROW_FORMAT=DYNAMIC;
--
-- テーブル `allowed_ex` 内のデータをエクスポートします
--
----------- ----------------------------------------------------
---
-- table Structure `category`
--
CREATE TABLE `category` (
`cid` int(10) unsigned NOT NULL auto_increment COMMENT 'シード カテゴリ ID',
`name` varchar(255) NOT NULL COMMENT 'カテゴリ名、html 形式をサポート',
`sequence` int(10) unsigned NOT NULL COMMENT '表示の並べ替え、小さいものを最初に並べ替える必要があります',
PRIMARY KEY (`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT= 26;
- -
-- テーブル `category` のデータをエクスポートします
--
INSERT INTO `category` (`cid`, `name`, `sequence`) VALUES
(25, 'Music', 23) 、
(24, '学習教材', 24),
(23, '映画', 25);
---------------------- -------- --------------------------------

注: によって生成された SQL ファイルに適用されます。 phpmyadmin




http://www.bkjia.com/PHPjc/328062.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/328062.html
技術記事 demo.php: 次のようにコードをコピーします: ?php /*** SQLファイルを読み取り、データベースに書き込みます * @バージョン1.01のdemo.php*/ class DBManager { var $dbHost = ''; var $dbPassword...

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート