(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();
} 展开
插入语句太多时执行不完,而没有显示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();
} 展开
展开全部
提个建议,楼主是不是可以把去除掉'---'的字符串再拼起来,然后一次执行这个sql呢,这样的效率应该会高很多吧。
或者呢,再做更进一步的优化,把读出来的sql整理成这样(前提是你这些数据都是插入到一个表的,当然这个也可以在PHP里判断一下):
insert into table (field1, field2....) values (value1, value2...),(value1, value2...),(value1, value2...),......; 这样做以后mysql在执行的时候速度也会提升很多。
或者呢,再做更进一步的优化,把读出来的sql整理成这样(前提是你这些数据都是插入到一个表的,当然这个也可以在PHP里判断一下):
insert into table (field1, field2....) values (value1, value2...),(value1, value2...),(value1, value2...),......; 这样做以后mysql在执行的时候速度也会提升很多。
展开全部
1楼说的对,你这个语句会先load 整个文件,然后对整个文件做数组处理,再循环全部行, 效率肯定不高,因为你至少循环了2次全部文件. 1500句估计也得有个好几MB的文件, 不算小.
你应该把执行的语句放到第一次读文件的时候就做, 每次读到-就停,然后执行这个语句,
这样效率会高一倍.
还有就是把@去掉,这个会隐藏显示错误. 在你代码最前加个error_reporting(E_ALL);会显示所有错误
你应该把执行的语句放到第一次读文件的时候就做, 每次读到-就停,然后执行这个语句,
这样效率会高一倍.
还有就是把@去掉,这个会隐藏显示错误. 在你代码最前加个error_reporting(E_ALL);会显示所有错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@mysql_query($myarray[$i]);
前面的@屏蔽了这条语句的错误,可以去掉@看看。
前面的@屏蔽了这条语句的错误,可以去掉@看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
because php里面没有try catch. 不存在什么异外终止的。。。。你需要在数据库里做操作。或者在PHP里加个回滚吧。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询