بک آپگیری از دیتابیسmysql از طریق کد php

برای بک آپ (backup)گیری از دیتابیس mysql از طریق کد php مینوانیم به صورت زیر عمل کنیم
ابتدا به دیتابیس متصل می شویم
سپس تمام جداول دیتابیس انتخابی را در آرایه قرار میدهیم
و با استفاده از کوئری select اطلاعات را ذخیره و پس از آن به محل مورد نظر انتقال میدهیم و write می کنیم

 backup_tables('localhost', 'user', 'password', 'dbname');
        /* backup the db OR just a table */
        function backup_tables($host, $user, $pass, $name, $tables = '*') {
            $link = mysql_connect($host, $user, $pass);
            mysql_select_db($name, $link);
            //get all of the tables
            if ($tables == '*') {
                $tables = array();
                $result = mysql_query('SHOW TABLES');
                while ($row = mysql_fetch_row($result)) {
                    $tables[] = $row[0];
                }
            } else {
                $tables = is_array($tables) ? $tables : explode(',', $tables);
            }
$return="";
            //cycle through
            foreach ($tables as $table) {
                $result = mysql_query('SELECT * FROM ' . $table);
                $num_fields = mysql_num_fields($result);
                $return.= 'DROP TABLE ' . $table . ';';
                $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE ' . $table));
                $return.= "\n\n" . $row2[1] . ";\n\n";
                for ($i = 0; $i < $num_fields; $i++) {
</br>
                    while ($row = mysql_fetch_row($result)) {
</br>
                        $return.= 'INSERT INTO ' . $table . ' VALUES(';
</br>
                        for ($j = 0; $j < $num_fields; $j++) {
</br>
                            $row[$j] = addslashes($row[$j]);
</br>
                            $row[$j] = ereg_replace("\n", "\\n", $row[$j]);
</br>
                            if (isset($row[$j])) {
</br>
                                $return.= '"' . $row[$j] . '"';
</br>
                            } else {
</br>
                                $return.= '""';
</br>
                            }
</br>
                            if ($j < ($num_fields - 1)) {
</br>
                                $return.= ',';
</br>
                            }
</br>
                        }
</br>
                        $return.= ");\n";
</br>
                    }
</br>
                }
</br>
                $return.="\n\n\n";
</br>
            }
</br>
            //save file
</br>
          $handle = fopen('repository/ghasreahan-' .date('Y-m-d-H-i-s').'-'. (md5(implode(',', $tables))) . '.sql', 'w+');
</br>
            fwrite($handle, $return);
</br>
            fclose($handle);
</br>
        }
</br>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *