php 備份sql 格式錯誤

能夠順利備份sql資料
但是格式會錯誤
哪裡錯了? 弄一下午
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1))
{
$table=$t[0];
$q2=mysql_query("show create table `$table`");
$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create Table'].";

";
$q3=mysql_query("select * from `$table`");

while($data=mysql_fetch_assoc($q3))
{
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";
$mysql.="($vals),
";
}

}

若是從phpmyadmin直接輸出的格式會是這樣:

DROP TABLE IF EXISTS `a`;
CREATE TABLE IF NOT EXISTS `a` (
`serial` int(255) unsigned NOT NULL AUTO_INCREMENT,
`x` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`x2` varchar(255) COLLATE utf8_unicode_ci NOT NULL
PRIMARY KEY (`serial`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;

INSERT INTO `a` (`serial`,`x`,`x2`) VALUES
('1','',''),
('2','',''),
('3','','');

若是從我的備份程式下載後會是這樣:

CREATE TABLE `a` (
`serial` int(255) unsigned NOT NULL AUTO_INCREMENT,
`x` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`x2` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`serial`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

('1','',''),
('2','',''),
('3','',''),

如何跟phpmyadmin匯出來的一模一樣?
2016-01-23 22:32 發佈

mypeter0604 wrote:
能夠順利備份sql...(恕刪)


閣下有沒有考慮不是寫 php 來 run ,而是用 mysql 本身就有的 mysqldump 來匯出?
應該是差在判斷式

你在測試時,有把 table a 刪掉嗎?

phpmyadmin 的判斷式是如果 table a 存在,就刪除,不存在就建立

而你的則是建立,不論 table a 是否存在
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?