ravand
جمعه 30 مرداد 1394, 21:35 عصر
سلام
یه برنامه ای رو قبلا اقای شهرکی داده بودن برای پشتیبانگیری از اطلاعات که با دستورات mysql نوشته شده بود. من اینو تبدل کردم به pdo <لی متاسفانه فقط دستورات sql رو پشتیبان میگیره و اطلاعاتی که داخل دیتابیس هست رو ازش پشتیبان نمیگیره:
دستورات pdo:
<?php
include('connect.php');
$tables = '*';
date_default_timezone_set('Asia/Tehran');
$sql = '';
$dbh->exec("SET CHARACTER SET utf8");
if($tables == '*') {
$tables = array();
$sth = $dbh->prepare('SHOW TABLES');
$sth->execute();
foreach($sth as $row) {
$tables[] = $row[0];
}
$sth->closeCursor();
}else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
foreach($tables as $table) {
$sth = $dbh->prepare('SELECT * FROM `'.$table.'`');
$colcount = $sth->columnCount();
$sql .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$sth = $dbh->prepare('SHOW CREATE TABLE `'.$table.'`');
$sth->execute();
$row2 = $sth->fetch();
$sql .= $row2[1].';'.PHP_EOL.PHP_EOL;
for ($i = 0; $i < $colcount; $i++) {
foreach($sql as $row) {
$sql .= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $colcount; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$sql .= '\''.$row[$j].'\'';
}
else {
$sql .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$sql .= ',';
}
}
$sql .= ');'.PHP_EOL;
}
}
$sql .= PHP_EOL.PHP_EOL.PHP_EOL;
}
$timet=time();
$file = $timet.'.sql';
header('Content-Disposition: attachment; filename='.$file);
header('Content-Type: text/x-sql');
header('Content-Transfer-Encoding: utf-8');
echo $sql;
?>
دستورات mysql:
<?php
include('connect.php');
$tables = '*';
date_default_timezone_set('Asia/Tehran');
$sql = '';
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
if($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
mysql_free_result($result);
}
else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
foreach($tables as $table) {
$result = mysql_query('SELECT * FROM `'.$table.'`');
$num_fields = mysql_num_fields($result);
$sql .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$row = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table.'`'));
$sql .= $row[1].';'.PHP_EOL.PHP_EOL;
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)) {
$sql .= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$sql .= '\''.$row[$j].'\'';
}
else {
$sql .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$sql .= ',';
}
}
$sql .= ');'.PHP_EOL;
}
}
$sql .= PHP_EOL.PHP_EOL.PHP_EOL;
}
$timet=time();
$file = $timet.'.sql';
header('Content-Disposition: attachment; filename='.$file);
header('Content-Type: text/x-sql');
header('Content-Transfer-Encoding: utf-8');
echo $sql;
?>
یه برنامه ای رو قبلا اقای شهرکی داده بودن برای پشتیبانگیری از اطلاعات که با دستورات mysql نوشته شده بود. من اینو تبدل کردم به pdo <لی متاسفانه فقط دستورات sql رو پشتیبان میگیره و اطلاعاتی که داخل دیتابیس هست رو ازش پشتیبان نمیگیره:
دستورات pdo:
<?php
include('connect.php');
$tables = '*';
date_default_timezone_set('Asia/Tehran');
$sql = '';
$dbh->exec("SET CHARACTER SET utf8");
if($tables == '*') {
$tables = array();
$sth = $dbh->prepare('SHOW TABLES');
$sth->execute();
foreach($sth as $row) {
$tables[] = $row[0];
}
$sth->closeCursor();
}else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
foreach($tables as $table) {
$sth = $dbh->prepare('SELECT * FROM `'.$table.'`');
$colcount = $sth->columnCount();
$sql .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$sth = $dbh->prepare('SHOW CREATE TABLE `'.$table.'`');
$sth->execute();
$row2 = $sth->fetch();
$sql .= $row2[1].';'.PHP_EOL.PHP_EOL;
for ($i = 0; $i < $colcount; $i++) {
foreach($sql as $row) {
$sql .= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $colcount; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$sql .= '\''.$row[$j].'\'';
}
else {
$sql .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$sql .= ',';
}
}
$sql .= ');'.PHP_EOL;
}
}
$sql .= PHP_EOL.PHP_EOL.PHP_EOL;
}
$timet=time();
$file = $timet.'.sql';
header('Content-Disposition: attachment; filename='.$file);
header('Content-Type: text/x-sql');
header('Content-Transfer-Encoding: utf-8');
echo $sql;
?>
دستورات mysql:
<?php
include('connect.php');
$tables = '*';
date_default_timezone_set('Asia/Tehran');
$sql = '';
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
if($tables == '*') {
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result)) {
$tables[] = $row[0];
}
mysql_free_result($result);
}
else {
$tables = is_array($tables) ? $tables : explode(',', $tables);
}
foreach($tables as $table) {
$result = mysql_query('SELECT * FROM `'.$table.'`');
$num_fields = mysql_num_fields($result);
$sql .= 'DROP TABLE IF EXISTS `'.$table.'`;'.PHP_EOL.PHP_EOL;
$row = mysql_fetch_row(mysql_query('SHOW CREATE TABLE `'.$table.'`'));
$sql .= $row[1].';'.PHP_EOL.PHP_EOL;
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysql_fetch_row($result)) {
$sql .= 'INSERT INTO `'.$table.'` VALUES(';
for($j = 0; $j < $num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace('\n', '\\n', $row[$j]);
if (isset($row[$j])) {
$sql .= '\''.$row[$j].'\'';
}
else {
$sql .= '\'\'';
}
if ($j < ($num_fields - 1)) {
$sql .= ',';
}
}
$sql .= ');'.PHP_EOL;
}
}
$sql .= PHP_EOL.PHP_EOL.PHP_EOL;
}
$timet=time();
$file = $timet.'.sql';
header('Content-Disposition: attachment; filename='.$file);
header('Content-Type: text/x-sql');
header('Content-Transfer-Encoding: utf-8');
echo $sql;
?>