以下是我通過互聯網找到的使用php獲取數據庫備份的代碼。代碼在本地主機中正常工作。但是當它位於在線服務器中時,它無法正常工作。它會創建一個數據庫.sql文件,但文件是空的。問題是什麼??我認爲這是一個服務器權限問題。我怎麼能讓這個代碼在我的在線服務器上工作? :(使用PHP獲取數據庫備份
<?php
$con = mysqli_connect("localhost","root","","dhn_online_db");
$tables = array();
$query = mysqli_query($con, 'SHOW TABLES');
while($row = mysqli_fetch_row($query)){
$tables[] = $row[0];
}
$result = "";
foreach($tables as $table){
$query = mysqli_query($con, 'SELECT * FROM '.$table);
$num_fields = mysqli_num_fields($query);
$result .= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysqli_fetch_row(mysqli_query($con, 'SHOW CREATE TABLE '.$table));
$result .= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysqli_fetch_row($query)){
$result .= '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])){
$result .= '"'.$row[$j].'"' ;
}else{
$result .= '""';
}
if($j<($num_fields-1)){
$result .= ',';
}
}
$result .= ");\n";
}
}
$result .="\n\n";
}
//Create Folder
$folder = 'Backup_Files/';
if (!is_dir($folder))
mkdir($folder, 0777, true);
chmod($folder, 0777);
$date = date('m-d-Y');
$filename = $folder."db_backup_".$date;
echo $filename;
$handle = fopen($filename.'.sql','w+');
fwrite($handle,$result,0777);
fclose($handle);
?>
你缺少'的error_reporting(E_ALL);'在腳本的開頭添加我提到的代碼,看看有沒有。特定的行會產生錯誤 – MonkeyZeus
我想知道爲什麼你要在PHP中實現'mysqldump',整個事情是用一個單一的命令完成的,例如'mysqldump db> backup $(date +%F_%T).sql' –
There是PHPMyAdmin中的導出函數,如果它對您可用的話。 –