php生成sql格式的mysql備份

jphp1 9年前發布 | 986 次閱讀 PHP

php讀取數據庫生成一條一條的sql語句,可以用作mysql的備份

if (!function_exists('mysql_dump')) {

function mysql_dump($database) {

  $query = '';

  $tables = @mysql_list_tables($database);
  while ($row = @mysql_fetch_row($tables)) { $table_list[] = $row[0]; }

  for ($i = 0; $i < @count($table_list); $i++) {

     $results = mysql_query('DESCRIBE ' . $database . '.' . $table_list[$i]);

     $query .= 'DROP TABLE IF EXISTS `' . $database . '.' . $table_list[$i] . '`;' . lnbr;
     $query .= lnbr . 'CREATE TABLE `' . $database . '.' . $table_list[$i] . '` (' . lnbr;

     $tmp = '';

     while ($row = @mysql_fetch_assoc($results)) {

        $query .= '`' . $row['Field'] . '` ' . $row['Type'];

        if ($row['Null'] != 'YES') { $query .= ' NOT NULL'; }
        if ($row['Default'] != '') { $query .= ' DEFAULT \'' . $row['Default'] . '\''; }
        if ($row['Extra']) { $query .= ' ' . strtoupper($row['Extra']); }
        if ($row['Key'] == 'PRI') { $tmp = 'primary key(' . $row['Field'] . ')'; }

        $query .= ','. lnbr;

     }

     $query .= $tmp . lnbr . ');' . str_repeat(lnbr, 2);

     $results = mysql_query('SELECT * FROM ' . $database . '.' . $table_list[$i]);

     while ($row = @mysql_fetch_assoc($results)) {

        $query .= 'INSERT INTO `' . $database . '.' . $table_list[$i] .'` (';

        $data = Array();

        while (list($key, $value) = @each($row)) { $data['keys'][] = $key; $data['values'][] = addslashes($value); }

        $query .= join($data['keys'], ', ') . ')' . lnbr . 'VALUES (\'' . join($data['values'], '\', \'') . '\');' . lnbr;

     }

     $query .= str_repeat(lnbr, 2);

  }

  return $query;

}

}</pre>

 本文由用戶 jphp1 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!