PHP Backup MySQL
Setelah melakukan beberapa percobaan ternyata membackup data dengan menggunakan perintah LOAD DATA dan SELECT … INTO OUTFILE, MYSQL memberikan nilai default untuk File_priv tersebut N atau tidak dapat melakukan eksekusi dengan perintah tersebut, kecuali jika File_priv tersebut kita rubah menjadi Y. Hal ini jelas untuk memberikan keamanan, karena hanya dapat dilakukan untuk keperluan administrasi, pemakai sebaiknya tidak memiliki wewenang ini.
Untuk keperluan backup dapat kita lakukan dengan cara sebagai berikut :
<?php
function datadump ($table, $db='') {
$result .= "# Dump of $table n";
$result .= "# Dump DATE : " . date("d-M-Y H:i:s") ."nn";
$query = mysql_query("select * from $table");
$num_fields = @mysql_num_fields($query);
$numrow = mysql_num_rows($query);
$row = mysql_fetch_row($query);
for ($i =0; $i<$numrow; $i++) {
$result .= "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])) $result .= ""$row[$j]"" ; else $result .= """";
if ($j<($num_fields-1)) $result .= ",";
}
$result .= ");n";
}
return $result . "nnn";
}
if( isset($_POST['submit']) ):
while( list($id, $namaTable)=each($_POST['tableName']) ):
$content.=datadump($namaTable, $db_name);
endwhile;
$file_name = "MySQL_Database_Backup.sql";
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=$file_name");
echo $content;
exit;
else:
?>
<div align="center">
<form method="post" action="">
<table width="50%">
<caption><h3>BACKUP TABLES</h3></caption>
<?php
$hasil = mysql_list_tables($db_name);
while( $namaTable = mysql_fetch_array($hasil) ):
?>
<tr>
<td>
<input type="checkbox" name="tableName[]" value="<?php echo $namaTable['0']?>" id="<?php echo $namaTable['0']?>" />
<label for="<?php echo $namaTable['0']?>"><?php echo $namaTable['0']?></label>
</td>
</tr>
<?php
endwhile;
?>
<tr>
<td><input type="submit" name="submit" value="Backup Tables" /></td>
</tr>
</table>
</form>
<?php
endif;
?>
</div>
mysql_num_fields = fungsi ini berguna untuk memperoleh jumlah kolom pada suatu hasil permintaan.
bentuk pemanggilannya :
mysql_num_fields(pengenal_hasil);
Dalam hal ini pengenal_hasil menyatakan nilai yang diperoleh dari pemanggilan fungsi seperti mysql_db_query atau mysql_query.
mysql_list_tables = fungsi ini berguna untuk memperoleh daftar nama tabel dalam suatu database.
mysql_list_tables(database[,pengenal_hubungan]);
database adalah nama database yang biasanya berasal dari mysql_list_dbs. Adapun pengenal_hubungan adalah pengenal yang dihasilkan oleh fungsi mysql_connect.
sumber :
- berbagai sumber.

