AN TOÀN và GIẢI PHÁP LÀM VIỆC (phiên bản mới nhất tại địa chỉ: Export.php + Import.php)
EXPORT_TABLES("localhost","user","pass","db_name");
//or add 5th parameter(array) of specific tables: array("mytable1","mytable2","mytable3")
Mã sản phẩm:
<?php
//https://github.com/tazotodua/useful-php-scripts
function EXPORT_TABLES($host,$user,$pass,$name, $tables=false, $backup_name=false){
$mysqli = new mysqli($host,$user,$pass,$name); $mysqli->select_db($name); $mysqli->query("SET NAMES 'utf8'");
$queryTables = $mysqli->query('SHOW TABLES'); while($row = $queryTables->fetch_row()) { $target_tables[] = $row[0]; } if($tables !== false) { $target_tables = array_intersect($target_tables, $tables); }
foreach($target_tables as $table){
$result = $mysqli->query('SELECT * FROM '.$table); $fields_amount=$result->field_count; $rows_num=$mysqli->affected_rows; $res = $mysqli->query('SHOW CREATE TABLE '.$table); $TableMLine=$res->fetch_row();
$content = (!isset($content) ? '' : $content) . "\n\n".$TableMLine[1].";\n\n";
for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) {
while($row = $result->fetch_row()) { //when started (and every after 100 command cycle):
if ($st_counter%100 == 0 || $st_counter == 0) {$content .= "\nINSERT INTO ".$table." VALUES";}
$content .= "\n(";
for($j=0; $j<$fields_amount; $j++) { $row[$j] = str_replace("\n","\\n", addslashes($row[$j])); if (isset($row[$j])){$content .= '"'.$row[$j].'"' ; }else {$content .= '""';} if ($j<($fields_amount-1)){$content.= ',';} }
$content .=")";
//every after 100 command cycle [or at last line] ....p.s. but should be inserted 1 cycle eariler
if ((($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num) {$content .= ";";} else {$content .= ",";} $st_counter=$st_counter+1;
}
} $content .="\n\n\n";
}
$backup_name = $backup_name ? $backup_name : $name."___(".date('H-i-s')."_".date('d-m-Y').")__rand".rand(1,11111111).".sql";
header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"".$backup_name."\""); echo $content; exit;
}
?>
Nguồn
2014-01-22 13:36:03
Liệu nó có thể chỉ là PHP? Luôn luôn có thể sử dụng mysqldump, và nếu nó cần phải là một kịch bản PHP, có thể sử dụng mysqldump thông qua exec. – Corbin
Ghép [Cách dễ dàng để xuất bảng SQL mà không cần truy cập vào máy chủ hoặc phpMyADMIN] (http://stackoverflow.com/q/81934/), [mã php để xuất cơ sở dữ liệu mysql] (http://stackoverflow.com/q/2491728/90527), [Thực hành tốt nhất: Nhập tệp mySQL bằng PHP; tách truy vấn] (http://stackoverflow.com/q/1883079/90527) và có khả năng [nhiều người khác] (http://stackoverflow.com/search?q=PHP+MySQL+%2Bexport+%2Bimport). – outis