random1 Posted August 26, 2008 Share Posted August 26, 2008 Hi All, I have the following code for backing up a database: /** * Database::backupDatabase() * Backs up tables, or an entire database. * @param mixed $host * @param mixed $username * @param mixed $password * @param mixed $databasename * @param string $tables * @return void */ function backupDatabase($host,$username,$password,$databasename,$tables = '*') { $link = mysql_connect($host,$username,$password); mysql_select_db($databasename,$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); } //cycle through foreach($tables as $table) { $result = mysql_query('SELECT * FROM '.$table); $num_fields = mysql_num_fields($result); $return = ''; $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++) { while($row = mysql_fetch_row($result)) { $return.= 'INSERT INTO '.$table.' VALUES('; for($j=0; $j<$num_fields; $j++) { $row[$j] = addslashes($row[$j]); $row[$j] = ereg_replace("\n","\\n",$row[$j]); if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; } if ($j<($num_fields-1)) { $return.= ','; } } $return.= ");\n"; } } $return.="\n\n\n"; } //save file $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+'); fwrite($handle,$return); fclose($handle); } This is currently only backing up 1 table in the database. I am calling the function as such: $database->backupDatabase(CONSTANT_DATABASE_HOST, CONSTANT_DATABASE_USERNAME, CONSTANT_DATABASE_PASSWORD, CONSTANT_DATABASE_NAME); The above CONSTANTS are defined and working. Any hints for doing this? Is there a better method of doing this? I am using mysql with the InnoDB engine. Link to comment https://forums.phpfreaks.com/topic/121351-using-php-to-backup-mysql-tablesdatabase/ Share on other sites More sharing options...
redarrow Posted August 26, 2008 Share Posted August 26, 2008 GO HERE IT ALL SHORT AND EASY........ http://www.php-mysql-tutorial.com/perform-mysql-backup-php.php Link to comment https://forums.phpfreaks.com/topic/121351-using-php-to-backup-mysql-tablesdatabase/#findComment-625662 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.