Когда mysql работал, я использовал этот код для получения резервной копии базы данных:
if (isset($_POST['getbackup'])) { $db = "newsite"; $version = "2.3.1"; $date = date('Ymd H:i:s'); $final = "-- #".$version."#\n"; $final .= "-- database backup\n"; $final .= "--\n"; $final .= "-- PHP version: ".phpversion()."\n"; $final .= "-- MySQL version: ".mysqli_get_server_info($mysqli)."\n"; $final .= "-- Date: ".date("r")."\n"; $result = $mysqli->query("SHOW TABLE STATUS FROM ".$db); while ($table = $result->fetch_array()) { $i = 0; $result2 = $mysqli->query("SHOW COLUMNS FROM $table[0]"); $z = $result2->num_rows; $final .= "\n--\n-- DB Export - Table structure for table `".$table[0]."`\n--\n\nCREATE TABLE `".$table[0]."` ("; $prikey = false; $insert_keys = null; while ($row2 = $result2->fetch_array()) { $i++; $insert_keys .="`".$row2['Field']."`"; $final .= "`".$row2['Field']."` ".$row2['Type']; if($row2['Null'] != "YES") { $final .= " NOT NULL"; } if($row2['Default']) $final .= " DEFAULT '".$row2['Default']."'"; if($row2['Extra']) { $final .= " ".$row2['Extra']; } if($row2['Key'] == "PRI") { $final .= ", PRIMARY KEY (`".$row2['Field']."`)"; $prikey = true; } if($i < $z){ $final .= ", "; $insert_keys .=", "; } else{ $final .= " "; } } if($prikey) { if($table[10]) $auto_inc = " AUTO_INCREMENT=".$table[10]; else $auto_inc = " AUTO_INCREMENT=1"; } else $auto_inc = ""; $charset = explode("_", $table[14]); $final .= ") ENGINE=".$table[1]." DEFAULT CHARSET=".$charset[0]." COLLATE=".$table[14].$auto_inc.";\n\n--\n-- DB Export - Dumping data for table `".$table[0]."`\n--\n"; $inhaltq = $mysqli->query("SELECT * FROM $table[0]"); while($inhalt = $inhaltq->fetch_array()) { $final .= "\nINSERT INTO `$table[0]` ("; $final .= $insert_keys; $final .= ") VALUES ("; for($i=0;$i<$z;$i++) { $inhalt[$i] = str_replace("'","`", $inhalt[$i]); $inhalt[$i] = str_replace("\\","\\\\", $inhalt[$i]); $einschub = "'".$inhalt[$i]."'"; $final .= preg_replace('/\r\n|\r|\n/', '\r\n', $einschub); if(($i+1)<$z) $final .= ", "; } $final .= ");"; } $final .= "\n"; } if($logged) { header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Description: File Transfer"); if(is_integer(mb_strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "msie")) AND is_integer(mb_strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "win" ))) header("Content-Disposition: filename=backup-".strtolower(date("DdMY")).".sql;"); else header("Content-Disposition: attachment; filename=backup-".strtolower(date("DdMY")).".sql;"); header("Content-Transfer-Encoding: binary"); } }
Он работает и сейчас, я получаю файл для загрузки, когда я нажимаю кнопку, НО файл не имеет в нем SQL-файла, вместо этого исходный код страницы находится в файле.
Что я делаю не так?