phpmyadmin实现sql执行的php实现方法求助

wchun 2004-04-30 09:45:02
恩,就是如题,我已经能把.sql文本文件读出来了
然后,就想执行.sql文件。

.sql的内容如下:

#
# 表的结构 `user`
#

CREATE TABLE `user` (
`userid` int(10) unsigned NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`usergroupid` int(10) unsigned NOT NULL default '0',
`password` varchar(50) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`joindate` int(10) unsigned NOT NULL default '0',
`homepage` varchar(100) default NULL,
`sex` varchar(10) NOT NULL default 'unknow',
`address` varchar(250) default NULL,
`qq` varchar(16) default NULL,
`icq` varchar(16) default NULL,
`msn` varchar(50) default NULL,
`intro` text,
`tel` varchar(20) default NULL,
`rememberpw` tinyint(1) unsigned NOT NULL default '1',
`posts` int(10) unsigned NOT NULL default '0',
`lastvisit` int(10) unsigned NOT NULL default '0',
`lastactivity` int(10) unsigned NOT NULL default '0',
`timezoneoffset` float NOT NULL default '8',
PRIMARY KEY (`userid`),
KEY `usergroupid` (`usergroupid`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

#
# 导出表中的数据 `user`
#

INSERT INTO `user` VALUES (1, 'root', 1, '57e2713d5f928af584863a23820fafd6', 'root@localhost', 1082511240, NULL, 'unknow', NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, 1083034986, 1083034987, '8');


$filehandle = fopen($_POST[datafile],"r");
$contents = fread ($filehandle, filesize ($_POST[datafile]));
fclose($filehandle);

$connection=mysql_connect ("$dbhost","$dbuser","$dbpass");
mysql_select_db("$dbname",$connection);
$SQL="$contents";
$result=mysql_query($SQL);
if(!$result) {echo "数据库错误,操作失败!";echo "<a href=\"javascript:history.go(-1)\">返回</a>"; exit;}



呵呵,这样最后的结果是数据库错误,操作失败!

请兄弟们帮忙。

还有一个问题,如果我的文件太大的话,是不用应该采用其他的方法来实现??
而不能直接$contents = fread ($filehandle, filesize ($_POST[datafile]));
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxbbs 2004-05-02
  • 打赏
  • 举报
回复
几M以上的数据最好不要用PHP执行导入。 如果你可以控制服务器哪么就用命令行进行操作.
wchun 2004-05-02
  • 打赏
  • 举报
回复
现在已经初步有一个解决的办法。
因为php中执行sql的时候只能一句一句de来,以;为界
所以现在我使用split分开,一句一句的进行也能够实现

只是现在的问题就是
$filehandle = fopen($_POST[datafile],"r");
$contents = fread ($filehandle, filesize ($_POST[datafile]));
fclose($filehandle);
$ar= split(";\n",$contents)
foreach ($ar as $SQL);
..........
一次性读进内存里面。结果。。。现在几M的数据就快死了

楼上的兄弟说的分块执行,能说得具体些吗?
文件块并不规则阿? 我不能限制每次多大。
-神仙- 2004-05-02
  • 打赏
  • 举报
回复
分块执行。
比如说每次执行100条
armi514 2004-05-02
  • 打赏
  • 举报
回复
你的.sql有多大?
在.ini里改一下最大上传试试
wchun 2004-05-02
  • 打赏
  • 举报
回复
哪位兄弟帮帮我啊???
唠叨大哥呢?
wchun 2004-04-30
  • 打赏
  • 举报
回复
谢谢兄弟的回复
可是现在还是同样的数据库错误,操作失败!
uuq 2004-04-30
  • 打赏
  • 举报
回复
$SQL=$contents;
$result=mysql_query($SQL);
我原来也试过。不过我的文件比较大。报错了。说sql语句太大。
你可以试下小点的。或都你先输出看看是不是sql语句
还有可能要做些转换。'\r\n'换吧。

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧