php ile yedek alma ?
2
●363
- 17-09-2015, 13:08:43Arkadaşlar, php ile db de bulunan belirli tabloları nasıl yedek alabilirim?
- 17-09-2015, 13:28:08Kimlik doğrulama veya yönetimden onay bekliyor.Hocam merhaba, aşağıda vereceğim fonksiyon ile bu işinizi çok kolay bir şekilde halledebilirsiniz.
Backup Fonksiyonu
function &backup_tables($host, $user, $pass, $name, $tables = '*'){ $data = "\n/*---------------------------------------------------------------". "\n SQL DB BACKUP ".date("d.m.Y H:i")." ". "\n HOST: {$host}". "\n DATABASE: {$name}". "\n TABLES: {$tables}". "\n ---------------------------------------------------------------*/\n"; $link = mysql_connect($host,$user,$pass); mysql_select_db($name,$link); mysql_query( "SET NAMES `utf8` COLLATE `utf8_general_ci`" , $link ); // Unicode if($tables == '*'){ //get all of the 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); } foreach($tables as $table){ $data.= "\n/*---------------------------------------------------------------". "\n TABLE: `{$table}`". "\n ---------------------------------------------------------------*/\n"; $data.= "DROP TABLE IF EXISTS `{$table}`;\n"; $res = mysql_query("SHOW CREATE TABLE `{$table}`", $link); $row = mysql_fetch_row($res); $data.= $row[1].";\n"; $result = mysql_query("SELECT * FROM `{$table}`", $link); $num_rows = mysql_num_rows($result); if($num_rows>0){ $vals = Array(); $z=0; for($i=0; $i<$num_rows; $i++){ $items = mysql_fetch_row($result); $vals[$z]="("; for($j=0; $j<count($items); $j++){ if (isset($items[$j])) { $vals[$z].= "'".mysql_real_escape_string( $items[$j], $link )."'"; } else { $vals[$z].= "NULL"; } if ($j<(count($items)-1)){ $vals[$z].= ","; } } $vals[$z].= ")"; $z++; } $data.= "INSERT INTO `{$table}` VALUES "; $data .= " ".implode(";\nINSERT INTO `{$table}` VALUES ", $vals).";\n"; } } mysql_close( $link ); return $data; }Kullanımı
// create backup ////////////////////////////////////// $backup_file = 'db-backup-'.time().'.sql'; // get backup $mybackup = backup_tables("myhost","mydbuser","mydbpasswd","mydatabase","*"); // save to file $handle = fopen($backup_file,'w+'); fwrite($handle,$mybackup); fclose($handle);backup_tables("myhost","mydbuser","mydbpasswd","my database","*");
Yukarıdaki koddaki * bölümüne istediğiniz bir tablonun ismini veya aralarına virgül koyarak tablo1,tablo2 şeklinde yedek alabilirsiniz. Kolay gelsin.
Dipnot:
myhost : sunucu adresiniz
mydbuser : veritabanı kullanıcı adı
mydbpasswd : veritabanı şifresi
mydatabase : yedek alınacak veritabanı
* : Tüm tabloları seç ve table1,table2
Kaynak - 17-09-2015, 15:08:25
