PDA

View Full Version : backup گیری از بخشی از جدول در mysql



Hamed Beyranvand
شنبه 24 مرداد 1394, 13:30 عصر
سلام دوستان.
یه جدول داریم به اطلاعات به کاربران زیادی اختصاص داره
حالا خواستم هرکاربر بتونه از اطلاعات خودش backup بگیره و یه خروجی .sql رو بهش تحویل بدیم که در صورت نیاز بتونه همین رو import کنه.
حالا اگه راهکاری دارین یا یه منبع به بنده معرفی کنید ممون میشم.
من هرچی پیدا کردم مربوط به کل جدول میشد.
ممنون

Hamed Beyranvand
شنبه 24 مرداد 1394, 14:45 عصر
جوینده یابنده است

<?php
error_reporting(E_ALL);

/* Define database parameters here */
define("DB_USER", 'root');
define("DB_PASSWORD", '');
define("DB_NAME", 'new_websitte');
define("DB_HOST", 'localhost');
define("OUTPUT_DIR", 'public/'); // Folder / Directory Name
define("TABLES", 'aria_exhibition');

/* Instantiate Backup_Database and perform backup */
$backupDatabase = new Backup_Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$status = $backupDatabase->backupTables(TABLES, OUTPUT_DIR) ? 'OK' : 'KO';
echo "Backup result: " . $status . " - By YourSelf";

/* The Backup_Database class */

class Backup_Database {
/* Host where database is located */

var $host = 'localhost';
var $username = 'root';
var $passwd = '';
var $dbName = 'new_websitte';
var $charset = '';

/* Constructor initializes database */

function Backup_Database($host, $username, $passwd, $dbName, $charset = 'utf8') {
$this->host = $host;
$this->username = $username;
$this->passwd = $passwd;
$this->dbName = $dbName;
$this->charset = $charset;
$this->initializeDatabase();
}

protected function initializeDatabase() {
$conn = @mysql_connect('localhost', 'root',''); // Ik Added @ to Hide PDO Error Message
mysql_select_db('new_website', $conn);
if (!mysql_set_charset($this->charset, $conn)) {
mysql_query('SET NAMES ' . $this->charset);
}
}

/* Backup the whole database or just some tables Use '*' for whole database or 'table1 table2 table3...' @param string $tables */

public function backupTables($tables = 'aria_exhibition', $outputDir = '../website/public/') {
try {
/* Tables to export */
if ($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while ($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
} else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}

// print_r($tables);die;

$sql = 'CREATE DATABASE IF NOT EXISTS ' . $this->dbName . ";\n\n";
$sql .= 'USE ' . $this->dbName . ";\n\n";

/* Iterate tables */
foreach ($tables as $table) {
echo "Backing up " . $table . " table...";

$result = mysql_query('SELECT * FROM aria_exhibition');

$numFields = mysql_num_fields($result);
// print_r($numFields);die;


$sql .= 'DROP TABLE IF EXISTS ' . $table . ';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE ' . $table));
$sql.= "\n\n" . $row2[1] . ";\n\n";

for ($i = 0; $i < $numFields; $i++) {
while ($row = mysql_fetch_row($result)) {
$sql .= 'INSERT INTO ' . $table . ' VALUES(';
for ($j = 0; $j < $numFields; $j++) {
$row[$j] = addslashes($row[$j]);
// $row[$j] = ereg_replace("\n", "\\n", $row[$j]);
if (isset($row[$j])) {
$sql .= '"' . $row[$j] . '"';
} else {
$sql.= '""';
}
if ($j < ($numFields - 1)) {
$sql .= ',';
}
}
$sql.= ");\n";
}
}
$sql.="\n\n\n";
echo " OK <br/><br/>" . "";
}
} catch (Exception $e) {
var_dump($e->getMessage());
return false;
}

return $this->saveFile($sql, $outputDir);
}

/* Save SQL to file @param string $sql */

protected function saveFile(&$sql, $outputDir = '../website/public/') {
if (!$sql)
return false;

try {
$handle = fopen('public/db-backup-' . $this->dbName . '-' . date("Ymd-His", time()) . '.sql', 'w+');
fwrite($handle, $sql);
fclose($handle);
} catch (Exception $e) {
var_dump($e->getMessage());
return false;
}
return true;
}

}
?>