备份数据库
2:PHP中mysql相关函数
mysql_list_tables()表查询函数,类似mysql_query()函数
mysql_fetch_field()字段信息函数,返回句柄
Name 字段的名称
Table字段所属数据表的名称
Type字段的类型
max_length字段的最大长度
not_null字段是否不能为空,是,则这一项的值为1
primary_key字段是否为主键,是,则这一项的值为1
unique_key字段是否为unique键,是,则这一项的值为1
multiple_key字段是否不为unique键,是,则这一项的值为1
Numeric字段是否为数字型,是,则这一项的值为1
Blob字段是否为blob型,是,则这一项的值为1
Unsigned数字型的字段是否为unsigned的,是,则这一项的值为1
Zerofill数字型的字段是否为zerofilled的,是,则这一项的值为1
3:备份时候的注意事项
1:注意数据库的大小,过大或者过多的表分段处理
2:生成的SQL文件名或者存放不易被猜到
3:备份生成文件可以表或者自动为单位保存
4:可以使用zip组件压缩生成的文件以便保存
$dbname = "itweb";
mysql_connect("localhost","root","123456");
mysql_select_db($dbname);
$tq = mysql_list_tables($dbname);
$sqlfile = '';
while($tr = mysql_fetch_row($tq))
{
//print_r($tr);
//echo $tr[0]."<br>";//获取表明
$sqlfile .= get_table_id($tr[0]);
get_table_row($tr[0]);
}
//写入到文件
$f = fopen($dbname.".sql","w+");
fwrite($f,$sqlfile);
fclose($f);
/**
* 获取某表的字段信息
* @param $tablename 表名
*/
function get_table_id($tablename)
{
$field = "CREATE TABLE `$tablename`(\n";
$query = mysql_query("SELECT * FROM $tablename");
while($row = mysql_fetch_field($query))
{
if($row->not_null){
//$not_null = "not_null";
}
$field .= "`$row->name` $row->type($row->max_length), \n";
}
$field .= ")\n";
return $field;
}
/**
* 获取表中的数据信息
* @param $tablename 表名
*/
function get_table_row($tablename)
{
$query = mysql_query("SELECT * FROM $tablename");
$num = mysql_num_fields($query); //获取表中字段的个数
var_dump($num);
while($row = mysql_fetch_row($query))
{
//var_dump($row);
$sql = '';
$field = "INSERT INTO $tablename VALUES (";
for($i=0; $i<$num; $i++)
{
$sql .= $row[$i].",";
}
$field = $field.$sql.")";
}
//echo $field;
//保存到文件中
$f = fopen($tablename.".sql","w+");
fwrite($f,$field);
fclose($f);
}
//get_table_row("admin");