FRIHOST FORUMS SEARCH FAQ TOS BLOGS COMPETITIONS
You are invited to Log in or Register a free Frihost Account!


script backup database





thaonguyenxanh
Code:
<?php



/*

 * MySQL Database Backup / Restore Tool

 *

 * Copyright (C) 2003 Mark Wraith. All rights reserved

 *

 * Graphics and layout derived from those made by Matt Mecham

 *

 */



// If you intend to keep the script

// on your server set this password



$password = '';







error_reporting(E_ERROR | E_WARNING | E_PARSE);   



new RestoreTool;



class RestoreTool

{

    var $logged_in = 0;

    var $maximum_time = 0;



    function RestoreTool() {

        global $HTTP_GET_VARS, $HTTP_COOKIE_VARS, $password;



        $this->timestamp = time();



        if (!$this->maximum_time)

        {

            //set_time_limit(0);

           $this->maximum_time = ini_get('max_execution_time');

        }



        if ($HTTP_GET_VARS['act'] == 'login')

        {

           $this->do_login();

        }

        elseif ($password && $password != $HTTP_COOKIE_VARS['mysqltool'])

        {

           $this->login();           

        }

        else

        {

            if ($password)

            {

               $this->logged_in = 1;

            }



            switch ($HTTP_GET_VARS['act'])

            {

                case 'logout':   

                    $this->logout();

                break;



                case 'change_db':

                    $this->read_db_details();

                    $this->set_database('The current settings do connect however if you wish to change the current database please edit the details below:');

                break;



                case 'set_database':   

                    $this->do_set_database();

                break;



                case 'backup':   

                    $this->backup();

                break;



                case 'do_backup':   

                    $this->do_backup();

                break;



                case 'restore':   

                    $this->restore();

                break;



                case 'do_restore':

                    $this->do_restore();

                break;



                default:

                   

                    $this->main();

            }           

        }



        if ($this->link)

        {

           mysql_close($this->link);

        }



        $this->output();

    }



    function timeout() {

        if (!$this->maximum_time)

        {

           return false;

        }

        elseif ((time() - $this->timestamp) > ($this->maximum_time - 5))

        {

           return true;

        }

        else

        {

           return false;

        }

    }



    function output() {

        if ($this->logged_in)

        {

           $logout_text = '[ <a href="mysql_tool.php?act=logout">Log Out</a> ]';

        }

        else

        {

           $logout_text = '';

        }



        if ($this->title)

        {

           $title = $this->title;

        }

        else

        {

           $title = 'Backup / Restore Tool';

        }



        print '<?xml version="1.0" encoding="iso-8859-1"?>';

        print <<<HTML



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>$title</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

{$this->meta}



<style type="text/css">

  TABLE, TR, TD                   { font-family: Verdana,Arial; font-size: 10px; color: #333333 }

  BODY                            { font: 10px Verdana; background-color: #FCFCFC; padding: 0; margin: 0 }

  a:link, a:visited, a:active     { color: #000055 }

  a:hover                         { color: #333377; text-decoration: underline }

  FORM                            { padding: 0; margin: 0 }



  .textbox                        { border: 1px solid black; padding: 1px; width: 100% }

  .headertable                    { background-color: #FFFFFF; border: 1px solid black; padding: 2px }

  .title                          { font-size: 10px; font-weight: bold; line-height: 150%; color: #FFFFFF; height: 26px; background-image: url(./style_images/1/tile_back.gif) }

  .table1                         { background-color: #FFFFFF; width: 100%; align: center; border: 1px solid black }

  .tablewrap                      { border: 1px dashed #777777; background-color: #F5F9FD; vertical-align: middle; }

  .tdrow1                         { background-color: #EEF2F7; padding: 3px }

  .tdrow2                         { background-color: #F5F9FD; padding: 3px }

  .tdtop                          { font-weight: bold; height: 24px; line-height: 150%; color: #FFFFFF; background-image: url(./tile_back.gif) }

  .note                           { margin: 10px; padding: 5px; border: 1px dashed #555555; background-color: #FFFFFF }

</style>

</head>



<body>

<br />

$this->output

<br />

<div align="center">

    [ <a href="mysql_tool.php">Script Index </a> ] $logout_text <br /><br />

    <small>&copy;2003 Mark Wraith</small>

</div>

</body>

</html>

HTML;

    }



    function error($error) {

        $this->output = <<<HTML

    <form method="post" action="mysql_tool.php?act=login">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Error</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2" colspan="2"><div align="center">$error</div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

HTML;

    }



    function login() {

        $this->output = <<<HTML

    <form method="post" action="mysql_tool.php?act=login">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">MySQL Tool :: Please Login</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td width="100" class="tdrow1">Access Password</td>

                <td width="250" class="tdrow2"><input type="password" class="textbox" name="password"></td>

              </tr>

              <tr>

                <td class="tdrow2" colspan="2"><div align="center"><input type="submit" value="Submit"></div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

HTML;

    }



    function do_login() {

        global $HTTP_POST_VARS, $password;



        if ($HTTP_POST_VARS['password'] == $password)

        {

            @setcookie ('mysqltool',$password,time()+3600*24*365);

            $this->logged_in = 1;

            $this->main();

        }

        else

        {

           $this->error('Invalid Password');

        }

    }



    function logout() {

        @setcookie ('mysqltool','',0);

        $this->logged_in = 0;

        $this->login();

    }



    function connect($return_errors = 0) {

        if (!$this->db['port'])

        {

           $this->db['port'] = '3306';

        }

       

        $error_text = '';



        $this->link = @mysql_connect ($this->db['host'] . ':' . $this->db['port'], $this->db['user'], $this->db['pass']);



        if ($this->link)

        {

            if(!@mysql_select_db($this->db['name'],$this->link))

            {

                $error_text = '<strong>Failed selecting database "'.$this->db['name'].'"</strong><br /><br />'.@mysql_error($this->link);

            }

        }

        else

        {

            $error_text = '<strong>Failed connecting to MySQL</strong><br /><br />'.@mysql_error();

        }



        if ($return_errors)

        {

           return $error_text;

        }

        else

        {

            if ($error_text)

            {

                $this->error($error_text);

                return false;               

            }

            else

            {

               return true;

            }

        }



    }



    function read_db_details() {

        if (file_exists('tool_settings.php'))

        {

           // Lets borrow IPB's settings

            include 'tool_settings.php';



            $this->db = $data;

        }

        elseif (file_exists('conf_global.php'))

        {

           // Lets borrow IPB's settings

            include 'conf_global.php';



            $this->db = array(

                'port'      =>      $INFO['sql_port'],

                'host'      =>      $INFO['sql_host'],

                'name'      =>      $INFO['sql_database'],

                'user'      =>      $INFO['sql_user'],

                'pass'      =>      $INFO['sql_pass'],

                'prefix'    =>      $INFO['sql_tbl_prefix']

            );

        }

        else

        {

           return false;

        }



        return true;

    }



    function do_set_database() {

        global $HTTP_POST_VARS;



        $this->db = array(

            'port'      =>      $HTTP_POST_VARS['port'],

            'host'      =>      $HTTP_POST_VARS['host'],

            'name'      =>      $HTTP_POST_VARS['name'],

            'user'      =>      $HTTP_POST_VARS['user'],

            'pass'      =>      $HTTP_POST_VARS['pass']

        );



        if (!$this->connect())

        {

           return;

        }



        // Connection details are fine, let's continue



        $file_data = "<?php



\$data = array(

    'port'      =>      '{$HTTP_POST_VARS['port']}',

    'host'      =>      '{$HTTP_POST_VARS['host']}',

    'name'      =>      '{$HTTP_POST_VARS['name']}',

    'user'      =>      '{$HTTP_POST_VARS['user']}',

    'pass'      =>      '{$HTTP_POST_VARS['pass']}'

);



?".'>';

   

        $file_data = str_replace("\r\n","\n",$file_data);

       



        // Mkay, lets write the details

        if ($fp = fopen('tool_settings.php','w'))

        {

           fwrite($fp,$file_data);

            fclose($fp);

        }

        else

        {

           $this->error('

            <strong>Unable to write to tool_settings.php</strong><br /><br />

            Please CHMOD this file so it is writable. If this is not possible please create a file named "tool_settings.php" with the contents of the text box below:<br /><br />

            <div align="center">

            <textarea rows="10" cols="40">'.htmlentities($file_data).'</textarea>

            </div>');



            return false;

        }



        // Funky, lets roll

        $this->main();



        return true;

    }



    function set_database($error = false) {

        if (!$error)

        {

           $text = 'We were unable to find any database settings, please enter your database details below:';

        }

        else

        {

           $text = $error;

        }



        $host = isset($this->db['host']) ? $this->db['host'] : 'localhost';

        $port = isset($this->db['port']) ? $this->db['port'] : '';

        $user = isset($this->db['user']) ? $this->db['user'] : '';

        $name = isset($this->db['name']) ? $this->db['name'] : '';



        $this->output = <<<HTML

    <form method="post" action="mysql_tool.php?act=set_database">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="450">

        <tr>

          <td align="center" class="title">Database Settings</td>

        </tr>

        <tr>

          <td>

            <div class="note">$text</div>

            <table class="table1" align="center" width="100%">

              <tr>

                <td width="100" class="tdrow1"><strong>Host</strong><br /><em>(leave if unsure)</em></td>

                <td width="350" class="tdrow2"><input type="text" class="textbox" name="host" value="$host"></td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Port</strong><br /><em>(leave if unsure)</em></td>

                <td class="tdrow2"><input type="text" class="textbox" name="port" value="$port"></td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Database Name</strong></td>

                <td class="tdrow2"><input type="text" name="name" class="textbox" value="$name"></td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Username</strong></td>

                <td class="tdrow2"><input type="text" name="user" class="textbox" value="$user"></td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Password</strong></td>

                <td class="tdrow2"><input type="text" name="pass" class="textbox"></td>

              </tr>

              <tr>

                <td class="tdrow2" colspan="2"><div align="center"><input type="submit" value="Connect"></div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

HTML;

    }



    function backup() {

        global $HTTP_POST_VARS;



        $this->read_db_details();

        $this->connect();



        $filename       = $HTTP_POST_VARS['filename'];

        $tables         = $HTTP_POST_VARS['tables'];

        $table_select   = $HTTP_POST_VARS['table_select'];

        $prefix         = $this->db['prefix'];



        switch ($tables)

        {

            case 'all':

                $tables = mysql_list_tables($this->db['name']);

                while (list($table_name) = mysql_fetch_array($tables))

                {

                   $options[ $table_name ] = 0;

                }

            break;



           case 'prefix':

                $tables = mysql_list_tables($this->db['name']);

                while (list($table_name) = mysql_fetch_array($tables))

                {

                    if (substr($table_name,0,strlen($prefix)) == $prefix)

                    {

                       $options[ $table_name ] = 0;

                    }

                }

            break;



            case 'selected':

                foreach ($table_select as $table_name)

                {

                   $options[ $table_name ] = 0;

                }

        }



        if (!count($options))

        {

           $this->error('No tables selected');

        }





        $data = base64_encode(serialize($options));



        $header = <<<DATA

-- SQL Dump

-- Backup script written by Mark Wraith



DATA;



        if (!$fp = fopen($filename, 'wb'))

        {

           return $this->error('Unable to write to backup file. Please CHMod the current directory so it is writable');

        }

        fwrite($fp,$header);

        fclose($fp);



        $url = 'mysql_tool.php?act=do_backup&file='.urlencode($filename).'&data='.$data;



        $this->meta = '<meta http-equiv="refresh" content="1; url='.$url.'">';

        $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Backup in progress...</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2" colspan="2">

                    <div align="center">The backup process has now started<br /><br /><a href="$url">Click here if you are not redirected</a></div>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

       

    }



    function do_backup() {

        global $HTTP_GET_VARS;



        $this->read_db_details();

        $this->connect();



        $data = unserialize(base64_decode($HTTP_GET_VARS['data']));

        $filename = $HTTP_GET_VARS['file'];



        $timedout = 0;

        $dump = '';



        foreach ($data as $table => $line)

        {

            if (!$this->timeout())

            {

               $returned = $this->backup_table($table, $line);



                if (is_array($returned))

                {

                   $timedout = 1;

                    $dump .= $returned[0];

                    $data[ $table ] = $returned[1];

                }

                else

                {

                    $dump .= $returned;

                   unset($data[ $table ]);

                }

            }

            else

            {

               $timedout = 1;

            }

        }



        if (!$fp = fopen($filename, 'ab'))

        {

           return $this->error('Unable to write to backup file. Please CHMod the current directory so it is writable');

        }

        fwrite($fp,$dump);

        fclose($fp);



        if ($timedout)

        {

            $data = base64_encode(serialize($data));

            $url = 'mysql_tool.php?act=do_backup&file='.urlencode($filename).'&data='.$data;

            $this->meta = '<meta http-equiv="refresh" content="1; url='.$url.'">';



            $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Backup in progress...</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    <div align="center">The backup process is in progress<br /><br /><a href="$url">Click here if you are not redirected</a></div>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

        }

        else

        {

            $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Backup Completed</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    The backup progress has finished and the file has been written to "$filename".<br /><br />

                    <a href="$filename">Click here to download the file</a>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

        }



    }



    function backup_table($table,$start) {

        $dump = '';



        if (!$start)

        {

            $result = mysql_query('SHOW FIELDS FROM '.$table);



            while ($field = mysql_fetch_assoc($result))

            {

                if (!$field['Null'])

                {

                    $null = ' NOT NULL default "'.$field['Default'].'"';

                }

                else

                {

                    $null = '';

                }



                if ($field['Extra'])

                {

                    $field['Extra'] = ' '.$field['Extra'];

                }



                $field_row[] = '  ' . $field['Field'] . ' ' . $field['Type'] . $null . $field['Extra'];

            }



            $result = mysql_query('SHOW KEYS FROM '.$table);



            while ($key = mysql_fetch_assoc($result))

            {

                if ($key['Key_name'] == 'PRIMARY')

                {

                    $primary_key = $key['Column_name'];

                }

                else

                {

                    $unique[ $key['Key_name'] ][] = $key['Column_name'];

                }

            }



            if (isset($primary_key))

            {

                $field_row[] = '  PRIMARY KEY (' . $primary_key . ')';

            }



            if (isset($unique))

            {

                foreach ($unique as $name => $keys)

                {

                    $field_row[] = '  UNIQUE ' . $name . ' (' . implode(',',$keys) . ')';

                }

            }





            $dump .= "\n\n--\n";

            $dump .= "-- Table structure for table '$table'\n";

            $dump .= "--\n\n";

            $dump .= "CREATE TABLE $table (\n";

            $dump .= implode(",\n",$field_row);

            $dump .= "\n);\n\n";



            $dump .= "\n\n--\n";

            $dump .= "-- Dumping data for table '$table'\n";

            $dump .= "--\n\n";

        }





        //

        // Records

        //



        $done = 0;

        $result = mysql_query('SELECT * FROM '.$table.' LIMIT '.$start.',-1');



        while ($row = mysql_fetch_row($result))

        {

            if ($this->timeout())

            {

                return array($dump,$done);

            }



            $done++;



            foreach ($row as $id => $value)

            {

                $value = str_replace('"','\\"',$value);

                $row[$id] = '"'.$value.'"';



            }



           $dump .= 'INSERT INTO ' . $table . ' VALUES (' . implode(',',$row) . ");\n";

        }



        return $dump;

    }





    function main() {

        if (!$this->link)

        {

            if (!$this->read_db_details())

            {

                return $this->set_database();

            }



            if ($error_text = $this->connect(1))

            {

                return $this->set_database($error_text);               

            }       

        }





        $tables_to_backup = '';



        if ($this->db['prefix'])

        {

           $tables_to_backup .= '<input type="radio" name="tables" value="prefix" checked="checked" />IPB Tables Only <br />';

           $tables_to_backup .= '<input type="radio" name="tables" value="all" />All<br />';

        }

        else

        {

           $tables_to_backup .= '<input type="radio" name="tables" value="all" checked="checked" />All<br />';           

        }



        $tables = mysql_list_tables($this->db['name']);



        $options = '';

        while (list($table_name) = mysql_fetch_array($tables))

        {

           $options .= '<option value="'.$table_name.'">'.$table_name.'</option>';

        }



        $tables_to_backup .= <<<HTML

<input type="radio" name="tables" value="selected" />Selected tables:<br />

<div style="margin-left: 40px">

    <select name="table_select[]" class="textbox" size="5" style="width: 250px" multiple="multiple">

$options

    </select>

</div>

HTML;





        $options = '';

        if ($dir = @opendir('./'))

        {

            while ($file = readdir($dir))

            {

                $temp = strtolower($file);



                if ($file != '.' && $file != '..' && strpos($temp, '.sql'))

                {

                    $options .= '<option value="'.$file.'">'.$file.'</option>';

                }

            } 

            closedir($dir);

        }

        $restore_files = '<select name="filename" class="textbox">'.$options.'</select>';



        $restore_files .= '<br /><br /><u>or</u> path:<br /><br /><input type="text" name="relfilename" class="textbox" />';



        $this->output = <<<HTML

    <form method="post" action="mysql_tool.php?act=login">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="450">

        <tr>

          <td align="center" class="title">Selected Database Details</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td width="150" class="tdrow1"><strong>Host / Port</strong></td>

                <td width="300" class="tdrow2">{$this->db['host']}:{$this->db['port']}</td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Database Name</strong></td>

                <td class="tdrow2">{$this->db['name']}</td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Username</strong></td>

                <td class="tdrow2">{$this->db['user']}</td>

              </tr>

              <tr>

                <td class="tdrow2" colspan="2"><div align="center">[ <a href="mysql_tool.php?act=change_db">Change Database</a> ]</div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

<br /><br />

    <form method="post" action="mysql_tool.php?act=backup">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="450">

        <tr>

          <td align="center" class="title">Backup Options</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td width="150" class="tdrow1" valign="top"><strong>Tables to backup:</strong></td>

                <td width="300" class="tdrow2">$tables_to_backup</td>

              </tr>

              <tr>

                <td class="tdrow1"><strong>Filename</strong></td>

                <td class="tdrow2"><input type="text" name="filename" class="textbox" value="sql_backup.sql"></td>

              </tr>

              <tr>

                <td class="tdrow2" colspan="2"><div align="center"><input type="submit" value="Backup"></div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

        <br /><br />

    <form method="post" action="mysql_tool.php?act=restore">

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="450">

        <tr>

          <td align="center" class="title">Restore Options</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td width="150" class="tdrow1" valign="top"><strong>SQL File to restore:</strong></td>

                <td width="300" class="tdrow2">$restore_files</td>

              </tr>

              <tr>

                <td class="tdrow2" colspan="2"><div align="center"><input type="submit" value="Restore"></div></td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

    </form>

HTML;

    }



    function restore() {

        global $HTTP_POST_VARS;



        $this->read_db_details();

        $filename = $HTTP_POST_VARS['filename'];

        $relfilename = $HTTP_POST_VARS['relfilename'];



        if ($relfilename)

        {

           $filename = $relfilename;

        }



        $url = 'mysql_tool.php?act=do_restore&filename='.urlencode($filename);



            $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Confirm Restoration</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    <strong>Are you sure you want to restore the SQL file?</strong><br /><br />

                    <a href="$url">Click here to restore "$filename" to "{$this->db['name']}"</a>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

    }



    function do_restore() {

        global $HTTP_GET_VARS;



        $filename = $HTTP_GET_VARS['filename'];

        $this->read_db_details();

        $this->connect();



        $filesize       = filesize($filename);

        $file_position  = isset($HTTP_GET_VARS['pos']) ? $HTTP_GET_VARS['pos'] : 0;

        $errors         = isset($HTTP_GET_VARS['ignore_errors']) ? 0 : 1;



        if (!$fp = fopen($filename,'rb'))

        {

           return $this->error('Unable to open file "'.$filename.'"');

        }



        $buffer = '';

        $inside_quote = 0;

        $quote_inside = '';

        $started_query = 0;



        $data_buffer = '';



        $last_char = "\n";



        // Sets file position indicator

        fseek($fp,$file_position);



        while ((!feof($fp) || strlen($buffer)) && !$this->timeout())

        {

            do

            {

                // Deals with the length of the buffer

                if (!strlen($buffer))

                {

                    $buffer .= fread ($fp,1024);

                }



                // Fiddle around with the buffers

                $current_char = $buffer[0];

                $buffer = substr($buffer, 1);





                if ($started_query)

                {

                    $data_buffer .= $current_char;

                }

                elseif (preg_match("/[A-Za-z]/i",$current_char) && $last_char == "\n")

                {

                    $started_query = 1;

                    $data_buffer = $current_char;

                }

                else

                {

                    $last_char = $current_char;

                }

            } while (!$started_query && (!feof($fp) || strlen($buffer)));





            if ($inside_quote && $current_char == $quote_inside && $last_char != '\\')

            {

                // We were inside a quote but now we aren't so reset the flag and carry on

                $inside_quote = 0;

            }

            elseif ($current_char == '\\' && $last_char == '\\')

            {

                $current_char = '';   

            }

            elseif (!$inside_quote && ($current_char == '"' || $current_char == '`' || $current_char == '\''))

            {

                // We have just entered a new quote

                $inside_quote = 1;

                $quote_inside = $current_char;

            }

            elseif (!$inside_quote && $current_char == ';')

            {

                // End of query so execute query, clear data buffer and advance counter

                mysql_query($data_buffer);



                if ($errors && mysql_errno())

                {

                    $new_position = ftell($fp) - strlen($buffer);

                    return $this->restore_error($data_buffer, $new_position);

                }





                $data_buffer = '';

                $last_char = "\n";

                $started_query = 0;

            }



            $last_char = $current_char;

        }





        $new_position = ftell($fp) - strlen($buffer) - strlen($data_buffer);



        if (feof($fp))

        {

            $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Restoration Completed</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    The restore progress has finished.

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

        }

        else

        {

            $url = 'mysql_tool.php?act=do_restore&filename='.urlencode($filename).'&pos='.$new_position;



            if (!$errors)

            {

               $url .= '&ignore_errors=1';

            }



            $process = floor(($new_position / $filesize) * 100);



            $this->meta = '<meta http-equiv="refresh" content="5; url='.$url.'">';

            $this->title = $process.'% Complete';

            $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="350">

        <tr>

          <td align="center" class="title">Restore in progress...</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    <div align="center">

                        <strong>Restoration is <b>$process%</b> complete.</strong>

                        <br /><br />

                        Please await the process of the next batch.

                        <br /><br />

                        <a href="$url">Click here if you are not redirected</a>

                    </div>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

        }



        fclose($fp);

       

    }



    function restore_error($query, $position) {

        global $HTTP_GET_VARS;



        $filename = $HTTP_GET_VARS['filename'];



        $url = 'mysql_tool.php?act=do_restore&filename='.urlencode($filename).'&pos='.$position;



        $mysql_error = mysql_error();



        $this->output = <<<HTML

      <table align="center" class="tablewrap" cellpadding="0" cellspacing="3" width="600">

        <tr>

          <td align="center" class="title">Query Failed</td>

        </tr>

        <tr>

          <td>

            <table class="table1" align="center" width="100%">

              <tr>

                <td class="tdrow2">

                    <div align="center">

                        <strong>An error occurred due to an invalid query</strong>

                        <br /><br />

                        Query Executed: $query

                        <br />

                        MySQL Returned: $mysql_error

                        <br /><br />

                        <a href="$url">Continue restore process</a><br />

                        <a href="{$url}&ignore_errors=1">Continue ignoring all further errors</a><br />

                    </div>

                </td>

              </tr>

            </table>

          </td>

        </tr>

      </table>

HTML;

    }

   

}





?>
thaonguyenxanh
orther tool
Download: http://www.music.2freegigs.us/thuyen/D2__Tool__MySQL_Manager.zip
Related topics
Phpbb Forum Site Transfer, How to do it, step by step instru
Importing an existing database...
Need help how to move a forum - Offer 100 frih$!!
Installing Nuke
mod_rewrite in Apache and how does it work?
Forum Board without database
Migrating a phpNuke site
phpBB problem
[man]como administro una phpBB2 ?
Problem connecting to MySQL database with PHP [RESOLVED]
How to search in a MySQL - database
Storing minutes and seconds in a database
How to copy site in local computer? I downloaded full Backup
Backup using cronjob
Reply to topic    Frihost Forum Index -> Scripting -> Php and MySQL

FRIHOST HOME | FAQ | TOS | ABOUT US | CONTACT US | SITE MAP
© 2005-2011 Frihost, forums powered by phpBB.