兄弟按你的方法出现下列错误提示(数据库很大,表很多) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /srv/phpMailer/test/.svn/prop-base/2.php on line 22 Warning: mysql_fetch_array() expects parameter 1 to be resource,
按这个方法设置了,出现下面的 sql语句You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
$result = $mysqli->query($sql);
$row = $result->fetch_array();
echo $row['Create Table'];
命令行下执行:
mysqldump -u mysql用户名 -p 密码 test -d > d:\test.sql
OK,D盘下就生成了一个只包含test数据库里表结构的文件了。如果只想要数据可以用-t
phpmyadmin也没法上传,
我现在能传一个PHP文件,主要能实现把数据库表结构导出为.sql文件就行了
$mysqli = new mysqli($db_host,$db_user,$db_pwd,$db_name);
$sql = 'SHOW CREATE TABLE `tblName`';
$result = $mysqli->query($sql);
$row = $result->fetch_array();
echo $row['Create Table'];如果有写权限,可以把内容输出到文件中,没有写权限的话就把输出内容手工复制到一个文件中
还是直接就这样保存为PHP然后运行
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<?php//把这些代码保存为一个php文件$mysqli = new mysqli('localhost','你的数据库用户名','你的数据库登录密码','你的数据库名');
$sql = 'SHOW CREATE TABLE `你的数据表名`';
$result = $mysqli->query($sql);
$row = $result->fetch_array();
echo $row['Create Table'];?>
</body>
</html>
自己用PHP代码导出的数据虽然也可以,但是很麻烦,数据量多的时候会不稳定,而且格式还得重来过!不推荐使用。
CREATE TABLE `test1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `price` decimal(20,2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
或者你刚催直接生成SQL文件:
<?php$mysqli = new mysqli('localhost','root','root','test');
$sql = 'SHOW CREATE TABLE `test1`';
$result = $mysqli->query($sql);
$row = $result->fetch_array();
file_put_contents('wdf.sql',$row['Create Table']); //直接生成同目录下的wdf.sql文件,内容是表结构
//echo $row['Create Table'];
$sql = 'SHOW CREATE TABLE `test数据库内表名称`';
$result = $mysqli->query($sql);
$row = $result->fetch_array();
file_put_contents('mysql.sql',$row['Create Table']);//直接生成同目录下的表结构导出文件sql
?>
<?php//把这些代码保存为一个php文件mysql_connect('localhost','root','wdf');
mysql_select_db('test');
$sql = 'SHOW CREATE TABLE `jiang`';
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
file_put_contents('wdf.sql',$row['Create Table']);?>
mysql_connect('localhost','root','root'); //数据库用户名,密码!
mysql_select_db('test');//选择要备份的数据库,我这里是test
$sql1 = 'SHOW tables';
$result = mysql_query($sql1);
$T=date("Y-m-d H:i:s");
$str="--PHP代码方式执行MYSQL数据库表结构备份 操作时间:$T\r\n\r\n";
while($row = mysql_fetch_array($result))
{
$tablename=$row['Tables_in_test'];
$sql2="show create table $tablename";
$result2 = mysql_query($sql2);
$row2 = mysql_fetch_array($result2);
$str=$str.$row2['Create Table']."\r\n\r\n";
}
file_put_contents('wdf.sql',$str);
兄弟按你的方法出现下列错误提示(数据库很大,表很多)
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /srv/phpMailer/test/.svn/prop-base/2.php on line 22 Warning: mysql_fetch_array() expects parameter 1 to be resource,
{
$tablename=$row['Tables_in_test'];
$sql2="show create table $tablename";
$result2 = mysql_query($sql2) or die ("sql语句$sql2执行错误".mysql_error());
var_dump($result2);//看看结果有没有获取出来resource!如果没有,那肯定是前面获取出错了。
$row2 = mysql_fetch_array($result2);
$str=$str.$row2['Create Table']."\r\n\r\n";
}
先拿个数据库表少的测试一下,如果没有问题,说明问题不在代码上,而是你其他问题!
那2个字段都不能那么取!Create Table,Tables_in_test!
是把这两个字段删除吗?
按这个方法设置了,出现下面的
sql语句You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
<?php
//把这些代码保存为一个php文件
$database='mysql'; //选择要进行的备份的数据库名称,还有下面的mysql用户密码,其他不变就可以了。
mysql_connect('localhost','root','root');
mysql_select_db($database);
$sql1 = 'SHOW tables';
$result = mysql_query($sql1) or die ("sql语句$sql1执行错误");
$T=date("Y-m-d H:i:s");
$str="--PHP代码方式执行MYSQL数据库表结构备份 操作时间:$T\r\n\r\n";
while($row = mysql_fetch_array($result))
{
$tablename=$row["Tables_in_$database"];
$sql2="show create table $tablename";
$result2 = mysql_query($sql2) or die ("sql语句$sql2执行错误".mysql_error());
$row2 = mysql_fetch_array($result2);
$str=$str.$row2['Create Table']."\r\n\r\n";
}
file_put_contents('wdf.sql',$str);
?>
你用这个测试一下应该OK了。不管你换哪个数据库名称都可以,包括mysql系统自带的mysql数据库!
兄弟非常感谢你的帮助,现在数据库表结构已经导出来了
只是有个问题,里面有很多问号,这是怎么回事
我数据库里有utf8格式的还有latin1格式的,是不是这个原因
下面是我截取的其中一段
CREATE TABLE `to_weituo` (
`wid` int(11) unsigned NOT NULL auto_increment COMMENT '??????ID',
`uid` int(11) NOT NULL default '0' COMMENT '?????ID',
`zb_cgate` tinyint(2) NOT NULL default '0' COMMENT '1????2????',
`zb_type` tinyint(2) NOT NULL default '0' COMMENT '????1????2????3????',
`zb_stype1` tinyint(2) NOT NULL default '0' COMMENT '???????1??2??3??',
`zb_stype2` tinyint(2) NOT NULL default '0' COMMENT '???????1?????2???????3????????4??????????5????6?????????',
`zb_price1` tinyint(2) NOT NULL default '0' COMMENT '??????',
`zb_price2` tinyint(2) NOT NULL default '0' COMMENT '??????',
`zb_name` varchar(100) character set utf8 NOT NULL default '' COMMENT '????',
`zb_area` int(8) NOT NULL default '0' COMMENT '????',
`shen` varchar(32) character set utf8 NOT NULL default '' COMMENT '???',
`city` varchar(32) character set utf8 NOT NULL default '' COMMENT '????',
`zb_hometype` tinyint(3) NOT NULL default '0' COMMENT '????',
`zb_zonetype` varchar(50) character set utf8 NOT NULL default '' COMMENT '????????(?????)',
`zb_dangchi` tinyint(2) NOT NULL default '0' COMMENT '????1?2?3??',
`zb_style` varchar(150) character set utf8 NOT NULL default '' COMMENT '???????????????1?2?3?4?',
`ftime` int(10) NOT NULL default '0' COMMENT '??????',
`zx_yaoqiu` text character set utf8 NOT NULL COMMENT '????',
`sj_yaoqiu` text character set utf8 NOT NULL COMMENT '????',
`email` varchar(120) character set utf8 NOT NULL default '' COMMENT 'Email',
`phone` char(16) character set utf8 NOT NULL default '' COMMENT '??',
`mobile` char(11) character set utf8 NOT NULL default '' COMMENT '??',
`qq` char(20) character set utf8 NOT NULL default '' COMMENT 'Q Q',
`ispass` tinyint(2) NOT NULL default '0' COMMENT '??????1?????0???',
`tb_nums` mediumint(4) NOT NULL default '0' COMMENT '???',
`usejidian` mediumint(7) NOT NULL default '0' COMMENT '????',
`sourceid` mediumint(3) NOT NULL default '0' COMMENT '??????',
`puttime` int(10) NOT NULL default '0' COMMENT '????',
PRIMARY KEY (`wid`)
) ENGINE=MyISAM AUTO_INCREMENT=4373 DEFAULT CHARSET=latin1
2、如果你只是想学习一下,自然可以自己尝试一下。但首先要掌握好 mysql 的基础知识
你在#30、#31的回帖,表示你对 mysql 的语言编码机制不甚了了
我看了一下,错误好像是MYSQL版本的问题,我现在正在升级版本
但导出来的数据表结构里很多问号,请问这个也是正常的吗?
将my.conf中latin1换成utf8