-1

我的问题很奇怪,在php中我使用while循环执行3600行sql查询

insert into display_default(slot_id,display_id,layout_id,slot_for) values ('1','1','0','a'); 
insert into display_default(slot_id,display_id,layout_id,slot_for) values ('3599','1','0','a');
insert into display_default(slot_id,display_id,layout_id,slot_for) values ('3600','1','0','o');

但插入将在 1300 行时中断。所以在 phpmyadmin 中我只能得到 1300 行结果,我尝试将这些查询行存储在一个变量中并在 phpmyadmin 中执行这 3600 行,它被正确插入。

对于英语不好的人,请帮助我非常初学者。

4

5 回答 5

6
insert into (col1,col2) values (val1, val2), (val3,val4), (val5, val6), ....  

insert into display_default(slot_id,display_id,layout_id,slot_for) values ('1','1','0','a') ,('3599','1','0','a'),  ('2','2','0','b'), ('3600','1','0','o'), ...

这将比一个接一个地执行单个 SQL 语句快得多。然而,执行单个语句 3500 次也可以工作。我猜你在某个时候会超时(可能是通过运行 phpMyAdmin 的 Web 服务器或数据库)。

于 2013-10-04T07:38:11.933 回答
2

您可能遇到了超时问题。在您的 php 代码中尽早尝试以下语句:

set_time_limit(0);

http://php.net/manual/en/function.set-time-limit.php

于 2013-10-04T07:43:21.837 回答
0

不要将 phpmyadmin 用于较大的 sql 文件。请尝试使用 mysql 命令行,或尝试使用一些软件(例如:sqlyog)。

于 2013-10-04T07:41:29.430 回答
0

由于您使用的是 phpmyadmin,您可以: 将您的查询放在一个文件中,然后从您的 phpmyadmin 页面导入您的 sql 查询文件。

于 2013-10-04T07:43:35.407 回答
0

最健壮的方法是使用控制台/命令提示符,而不是使用自己编写的 PHP/phpMyAdmin,因为 Apache 超时和 PHP 超时会影响结果。

使用以下命令将数据插入特定架构:

mysql -u your_user_name -p schema_name < your3600lines.sql

系统将提示您输入用户的 MySQL 密码your_user_name

于 2013-10-04T09:22:10.253 回答