ホームページ php教程 php手册 PHP は mysql データベース バックアップ クラスを実装します

PHP は mysql データベース バックアップ クラスを実装します

Jun 13, 2016 pm 12:30 PM
c mysql php どこ バックアップ それ 成し遂げる データ データベース サーバ 親切 必要

1. DbBak をインスタンス化するには、データ サーバーの場所 ($connectid) とバックアップ先のディレクトリ ($backupDir) という 2 つのことを DbBak に伝える必要があります。
require_once( 'TableBak.php');
$connectid = mysql_connect('localhost','root','123456');
$backupDir = 'data'; DbBak($connectid, $backupDir);

2. 次に、バックアップするデータベースを指定するだけでなく、バ​​ックアップするテーブルのみを詳細に設定することもできます。 up:
2.1 mybbs ライブラリをバックアップする場合は、すべてのテーブルに対して次のようにします:

$DbBak->backupDb('mybbs'); mybbs ライブラリ内のボード、フェイス、およびフレンドリストのテーブルのみをバックアップしたい場合は、次の 1 次元配列を指定します:

$DbBak->backupDb('mybbs',array('board' ,'face','friendsite'));

2.3 ボード テーブルなどのテーブルのみをバックアップする場合:
$DbBak->backupDb('mybbs','board' );
3、データ回復:
2.1、2.1、および 2.3 の 3 つのケースでは、対応するステートメントを変更し、backupDb をrestoreDb に置き換えてデータ回復を実現します:

$DbBak ->restoreDb('mybbs');
SQL コード
$DbBak->restoreDb(' mybbs',array('board','face','friendsite'));
$DbBak->restoreDb('mybbs','board');
PHP コード
require_once('TableBak.php');
class DbBak {
var $_mysql_link_id; 🎜>var $_dataDir;
var $_tableList; 🎜> function DbBak($_mysql_link_id,$dataDir)
{
( (!is_string($dataDir)) || strlen($dataDir)==0 ) && die('error:$datadir は文字列ではありません') ;
!is_dir($dataDir) && mkdir($dataDir);
$this->_dataDir = $dataDir; ->_mysql_link_id = $_mysql_link_id; 🎜>
関数backupDb($dbName,$tableName=null)
{
( (!is_string($dbName)) || strlen($dbName)==0 ) && die('$dbName は文字列値である必要があります');
//ステップ 1: データベースを選択します:
mysql_select_db($dbName);
//ステップ 2: データベースのバックアップ ディレクトリを作成します
$dbDir = $this->dataDir.DIRECTORY_SEPARATOR;
!is_dir($dbDir) && mkdir($dbDir);
//ステップ 3: データベース内のすべてのテーブル名を取得し、テーブルのバックアップを開始します。 🎜>$this->_TableBak = new TableBak($this ->_mysql_link_id,$dbDir);
if(is_null($tableName)){//データベース内のすべてのテーブルをバックアップします
$this-> ;_backupAllTable($dbName);
return;
}
if(is_string($tableName)){
(strlen($tableName)==0) && die('....' );
$this->backupOneTable($dbName ,$tableName);
return;
if (is_array($tableName)){ || ) && die('....');
$this->_backupSomeTalbe($dbName,$tableName) >}
}

functionrestoreDb($dbName,$tableName=null){
( (!is_string($dbName)) || strlen($dbName)==0 ) && die('$dbName はstring value');
//ステップ 1: データベースが存在するかどうかを確認して接続します:
@mysql_select_db($dbName) || データベース $dbName が存在しません。 ) ;
//ステップ 2: データベースのバックアップ ディレクトリが存在するかどうかを確認します
$dbDir = $this->_dataDir.DIRECTORY_SEPARATOR.$dbName;
!is_dir($dbDir) && die("$dbDir not存在します" );
//ステップ 3:復元の開始
$this->_TableBak = new TableBak($this->gt;_mysql_link_id,$dbDir);
if(is_null($tableName)){/ /データベース内のすべてのテーブルをバックアップ
$this->_restoreAllTable($dbName); =0) && die('....'); );
return;
}
if (is_array($tableName) ){
foreach ($tableName as $table){
( (!is_string($table)) || strlen ($table)==0) && die('....');
}
$this->_restoreSomeTalbe($dbName,$tableName);
return;
}

function _getTableList($dbName)
{
$tableList = array();
$result=mysql_list_tables($dbName,$this->_mysql_link_id); >for ($i = 0; $i array_push($tableList,mysql_tablename($result, $i));
}
mysql_free_result($)結果);
return $tableList;
}

function _backupAllTable($dbName)
}

function _backupOneTable($dbName,$tableName)
{
!in_array($tableName,$this->_getTableList($dbName)) && die("指定されたテーブル名$tableName はデータベースに存在しません"); ->_TableBak->backupTable($tableName);
}

function _backupSomeTalbe ($dbName,$TableNameList)
{
foreach ($TableNameList as $tableName){
!in_array($tableName,$this->_getTableList($dbName)) && die("指定されたテーブル名$tableName はデータベースに存在しません");テーブル名);
}
}

function _restoreAllTable($dbName)
{
//ステップ 1: すべてのデータ テーブルのバックアップ ファイルが存在するかどうか、および書き込み可能かどうかを確認します:
foreach ($this->_getTableList) ($ dbName) as $tableName){
$tableBakFile = $this->_dataDir.DIRECTORY_SEPARATOR
. $dbName.DIRECTORY_SEPARATOR
. $tableName.DI RECTORY_SEPARATOR 🎜>!is_writeable ($tableBakFile) && die ("$tableBakFile が存在しないか、書き込みできません");
}
//step2:startstore
foreach ($this->getTableList($dbName) as $tableName){
$tableBakFile = $this->_dataDir.DIRECTORY_SEPARATOR
$dbName.DIRECTORY_SEPARATOR
. $tableName.DIRECTORY_SE PARATOR this->_TableBak->restoreTable($tableName,$tableBakFile);
}
}

function _restoreOneTable($dbName,$tableName)
{
//step1 :データテーブルが存在するか確認します:
!in_array($tableName,$this->_getTableList($dbName) )) && die("指定されたテーブル名$tableNameはデータベースに存在しません ");
//ステップ2: データテーブルのバックアップファイルが存在するかどうか、および書き込み可能かどうかを確認します:
$tableBakFile = $this->_dataDir.DIRECTORY_SEPARATOR
. $dbName.DIRECTORY_SEPARATOR
.$tableName .DIRECTORY_SEPARATOR 🎜>$this ->_TableBak->restoreTable($tableName,$tableBakFile);
}
function _restoreSomeTalbe($dbName,$TableNameList)
{
//ステップ 1: データ テーブルが存在するかどうかを確認します:
foreach ($TableNameList as $tableName){
! in_array($tableName,$this->_getTableList($dbName)) && die("指定されたテーブル名$tableNameinはデータベースに存在しません"); //ステップ 2: データ テーブルのバックアップ ファイルが存在するかどうか、および書き込み可能であるかどうかを確認します:
foreach ($TableNameList as $tableName){
$tableBakFile = $this ->_dataDir.DIRECTORY_SEPARATOR $tableName。 sql';
!is_writeable ($tableBakFile) && die("$tableBakFile が存在しないか、書き込みできません");    
//step3:start restore:
foreach ($TableNameList as $tableName){
$tableBakFile = $this->_dataDir.DIRECTORY_SEPARATOR
。 $dbName.DIRECTORY_SEPARATOR
。 $tableName.DIRECTORY_SEPARATOR
。 $tableName.'.sql';    
$this->_TableBak->restoreTable($tableName,$tableBakFile);    
}
}
}
?>     

复制代码代码如下:

& lt;? PHP
// DBBAK のみがこのクラスを呼び出すことができます。
function TableBak($mysql_link_id,$dbDir)
{
$this->_mysql_link_id = $ mysql_link_id;
$this->dbDir = $dbDir; }

function backupTable($tableName)
{
//ステップ 1: テーブルのバックアップ ディレクトリ名を作成します:
$tableDir = $this->_dbDir.DIRECTORY_SEPARATOR.$tableName;
!is_dir( $tableDir) && mkdir($tableDir);
//ステップ 2: バックアップの開始:
$this ->_backupTable($tableName,$tableDir);
}

functionrestoreTable($tableName,$tableBakFile)
{
set_time_limit(0);
$fileArray = @ file($tableBakFile) または die("ファイル $tableBakFile を開くことができます");
$num = count( $fileArray);
mysql_unbuffered_query("DELETE FROM $tableName"); [0];
for ($i=1;$imysql_unbuffered_query($sql.$fileArray[$i]) または (die (mysql_error())) ;
}
return true;
}

function _getFieldInfo ($ tableName){
$fieldInfo = array(); LIMIT 1"; > =mysql_field_type($result,$i);
$fieldInfo[$field_name] = $field_type;
}
mysql_free_result($result);
return $fieldInfo;
}
function _quoteRow($fieldInfo,$row){ .mysql_escape_string($field_value)."";break;
case "日付": $row[$field_name] = "'"。 mysql_escape_string($field_value)."'";break;
case " datetime": $row[$field_name] = "'".mysql_escape_string($field_value)."'";break;
case "unknown": $row[$field_name] = "'".mysql_escape_string($field_value)."'";break;
case "int": $row[$ field_name] = intval($field_value) ); ブレーク;
ケース "$フィールド名" = intval($フィールド値) ブレーク;
ケース "タイムスタンプ":$row[$フィールド名] = ブレーク;
デフォルト: $row[$field_name] = intval($field_value)
}
}
return $row;
}
function _backupTable($tableName,$tableDir)
{
//テーブルのフィールド タイプを取得します:
$fieldInfo = $this-> ;_getFieldInfo ($tableName);

//ステップ 1: INSERT ステートメントの前半を作成し、ファイルに書き込みます:
$fields = array_keys($fieldInfo); implode(',',$ フィールド);
$sqltext="$tableName($fields)VALUES rn";
$datafile = $tableDir.DIRECTORY_SEPARATOR.'.sql'; >(!$handle = fopen ($datafile,'w')) && die("ファイル $datafile を開けません"); ファイル $datafile にデータを書き込みます;");
fclose($handle);

///ステップ 2: データを取得してファイルに書き込みます: リソース:
set_time_limit(0);
$sql = "select * from $tableName";
$result = mysql_query($sql,$this->_mysql_link_id);
//データのバックアップ ファイルを開きます: $tableName.xml
$datafile = $tableDir。 DIRECTORY_SEPARATOR.$tableName.'.sql';
(!$handle = fopen($datafile,'a')) && die("ファイル $datafile"); 🎜>//テーブルのレコードを 1 つずつ取得してファイルに書き込みます: $this->_quoteRow($fieldInfo,$row); $record)) && die("ファイル $ にデータを書き込めませんdatafile");
}
mysql_free_result($result);
// ファイルを閉じます: >fclose($handle); 🎜>
SQL コード
//例1 つのバックアップ:
require_once('DbBak.php');
$connectid = mysql_connect('localhost ','root','123456'); >$backupDir = 'data';
$DbBak = new DbBak($connectid,$backupDir);
$DbBak->backupDb('mybbs' ; DbBak.php'); TableBak.php');
$connectid = mysql_connect('localhost','root','123456'); 🎜>$DbBak = new DbBak($connectid,$backupDir);復元Db('mybbs');

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

PHPの現在のステータス:Web開発動向を見てください PHPの現在のステータス:Web開発動向を見てください Apr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHP:それは死にかけていますか、それとも単に適応していますか? PHP:それは死にかけていますか、それとも単に適応していますか? Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

See all articles