(php+mysql ) 请问while循环体的insert语句为什么意外终止也没有报错

我一共大概有1500条插入语句在a.sql文件中,语句之间用"--"分开。插入语句太多时执行不完,而没有显示query错误。刷新页面就可以继续插入。所以我想可能是浏览器停... 我一共大概有1500条插入语句 在a.sql文件中,语句之间用"--"分开。
插入语句太多时执行不完,而没有显示query错误。刷新页面就可以继续插入。所以我想可能是浏览器停止了相应。
本人新手,请问应该怎样提高插入语句的速度,一次性插入完全呢?谢谢。
我的部分代码如下:
$source=fopen("a.sql","rb");
$sql="";
while(!feof($source))
{
$sql .= fgets($source);
}
$myarray=explode("--",$sql);
for ($i=0;$i<=count($myarray)-1;$i++)
{
@mysql_query($myarray[$i]);
}
if(mysql_error())
{
echo mysql_error();
}
展开
 我来答
icso
2012-12-31 · TA获得超过651个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:429万
展开全部
提个建议,楼主是不是可以把去除掉'---'的字符串再拼起来,然后一次执行这个sql呢,这样的效率应该会高很多吧。
或者呢,再做更进一步的优化,把读出来的sql整理成这样(前提是你这些数据都是插入到一个表的,当然这个也可以在PHP里判断一下):
insert into table (field1, field2....) values (value1, value2...),(value1, value2...),(value1, value2...),......; 这样做以后mysql在执行的时候速度也会提升很多。
鬼狼手
2012-12-31 · TA获得超过189个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:141万
展开全部
1楼说的对,你这个语句会先load 整个文件,然后对整个文件做数组处理,再循环全部行, 效率肯定不高,因为你至少循环了2次全部文件. 1500句估计也得有个好几MB的文件, 不算小.
你应该把执行的语句放到第一次读文件的时候就做, 每次读到-就停,然后执行这个语句,
这样效率会高一倍.

还有就是把@去掉,这个会隐藏显示错误. 在你代码最前加个error_reporting(E_ALL);会显示所有错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blogforsite
2012-12-31 · TA获得超过170个赞
知道小有建树答主
回答量:189
采纳率:100%
帮助的人:207万
展开全部
@mysql_query($myarray[$i]);

前面的@屏蔽了这条语句的错误,可以去掉@看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
全球影视合集
2012-12-31 · TA获得超过154个赞
知道答主
回答量:225
采纳率:0%
帮助的人:55.7万
展开全部
because php里面没有try catch. 不存在什么异外终止的。。。。你需要在数据库里做操作。或者在PHP里加个回滚吧。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式