kan denne mysql backup funktion tilpasses utf-8
Hej, jeg har brugt denne backup-funktion til at tage backup af mine mysql databaser og nu har jeg bygget et nyt system som bruger unicode eller utf-8 som det hedder. Men nu virker den gamle backup-funktion ikke mere. Kan man tilpasse funktionen, så den også virker på utf-8 specielle tegn osv.Jeg håber der sidder en der kan hjælpe mig med dette.
På forhånd tak :o)
function backup_database($Host,$User,$Password,$Database){
#%% Backup function
// det kan jo godt tage lidt tid på en større DB
@set_time_limit(600);
$strNoTablesFound = "Ingen databasetabeller fundet";
$strHost = "Host";
$crlf="\n";
$strDatabase = "Database ";
$strTableStructure = "Struktur for tabel";
$strDumpingData = "Indhold af tabel";
$strErrorMsg = "Fejl";
$strSQLQuery = "SQL-query";
$strMySQLSaid = "MySQL: ";
$strBack = "Tilbage";
$strFileName = "Backup";
$strNameBackupAfDB = "Backup af database";
$strDone = "Downloadet d.";
$strat = "kl.";
$date_jour = date ("d-m-Y");
header("Content-disposition: filename=$strFileName $Database $date_jour.sql");
header("Content-type: application/ms-download");
header("Pragma: no-cache");
header("Expires: 0");
$client = $_SERVER["HTTP_USER_AGENT"];
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs)){
$os = $regs[1];
if (eregi("Win",$os)){
$crlf="\r\n";
}
}
function my_handler($sql_insert){
echo $sql_insert;
}
function get_table_content($db, $table, $handler, $crlf){
$result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
$i = 0;
while($row = mysql_fetch_row($result)){
$table_list = "(";
for($j=0; $j<mysql_num_fields($result);$j++)
$table_list .= mysql_field_name($result,$j).", ";
$table_list = substr($table_list,0,-2);
$table_list .= ")";
$schema_insert = "INSERT INTO $table $table_list VALUES (";
// $schema_insert = "INSERT INTO $table VALUES (";
for($j=0; $j<mysql_num_fields($result);$j++){
if(!isset($row[$j])){
$schema_insert .= " NULL,";
} else if($row[$j] != ""){
$schema_insert .= " '".addslashes($row[$j])."',";
} else {
$schema_insert .= " '',";
}
}
$schema_insert = ereg_replace(",$", "", $schema_insert);
$schema_insert = trim($schema_insert);
$schema_insert .= ");".$crlf;
$handler($schema_insert);
$i++;
}
return (true);
}
function get_table_def($db, $table, $crlf){
$schema_create = "";
$schema_create .= "CREATE TABLE $table (".$crlf;
$result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result)){
$schema_create .= " $row[Field] $row[Type]";
if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0")){
$schema_create .= " DEFAULT '$row[Default]'";
}
if($row["Null"] != "YES"){
$schema_create .= " NOT NULL";
}
if($row["Extra"] != ""){
$schema_create .= " $row[Extra]";
}
$schema_create .= ",".$crlf;
}
$schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
$result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
while($row = mysql_fetch_array($result)){
$kname=$row['Key_name'];
if(($kname != "PRIMARY") && ($row['Non_unique'] == 0)){
$kname="UNIQUE|$kname";
}
if(!isset($index[$kname])){
$index[$kname] = array();
}
$index[$kname][] = $row['Column_name'];
}
while(list($x, $columns) = @each($index)){
$schema_create .= ",".$crlf;
if($x == "PRIMARY"){
$schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
} else if (substr($x,0,6) == "UNIQUE"){
$schema_create .= " UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
} else {
$schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
}
}
$schema_create .= $crlf.")";
return (stripslashes($schema_create));
}
function mysql_die($error = ""){
echo "<b> $strErrorMsg </b><p>";
if(isset($sql_query) && !empty($sql_query)){
echo "$strSQLQuery: <pre>$sql_query</pre><p>";
}
if (empty($error)){
echo $strMySQLSaid.mysql_error();
} else {
echo $strMySQLSaid.$error;
echo "<br><a href=\"java script:history.go(-1)\">$strBack</a>";
exit;
}
}
// global $bruger, $Host, $User, $Password, $Database;
mysql_connect($Host, $User, $Password);
@mysql_select_db("$Database") or die ("Kunne ikke forbinde til databasen");
$tables = mysql_list_tables($Database);
$num_tables = @mysql_numrows($tables);
if($num_tables == 0){
echo $strNoTablesFound;
} else {
$i = 0;
$heure_jour = date ("H:i");
print "# ========================================================".$crlf;
print "#".$crlf;
print "# $strNameBackupAfDB : $Database".$crlf;
print "# $strDone $date_jour $strat $heure_jour ".$crlf;
print "#".$crlf;
print "# ========================================================".$crlf;
print $crlf;
while($i < $num_tables){
$table = mysql_tablename($tables, $i);
print $crlf;
print "# --------------------------------------------------------".$crlf;
print "#".$crlf;
print "# $strTableStructure '$table'".$crlf;
print "#".$crlf;
print $crlf;
echo get_table_def($Database, $table, $crlf).";".$crlf.$crlf;
print "#".$crlf;
print "# $strDumpingData '$table'".$crlf;
print "#".$crlf;
print $crlf;
get_table_content($Database, $table, "my_handler", $crlf);
$i++;
}
}
}
