0

我正在运行通过 jquery 使用标准 $.ajax 调用调用的以下 PHP 脚本。此 PHP 脚本通过存储过程将多条记录插入数据库。这个过程是一个简单的 INSERT INTO。

PHP脚本是

include_once '../Connections/define_connections.php';
$mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME);
$mysqli->set_charset("utf8");

for ($q=0;$q<50000;$q++){
    $varma  = $mysqli->prepare("CALL insert_qq(?,?,?)");
    $varma->bind_param('dds',$v1,$v2,$v3);
    $v1 = '1';
    $v2 = '2';
    $v3 = '3';
    $varma->execute();
};
$mysqli->close();

Mysql 程序是

分隔符 $$

CREATE DEFINER=`loopmap`@`%` PROCEDURE `insert_qq`(in latitude double,in longitude double,
in placename varchar(100))
BEGIN

insert into GEO_Structure values (default,default,default,default,latitude,longitude,
default,default,default,default,default,default,default,default,default,
default,default,default,default,default,default,default,default,default,default,default,
placename,default,default,default);

END

问题是,当循环数约为 10K 时,此代码可以正常工作,但是当它高于该数字时,例如 50K,如图所示,会出现一些问题。每条记录被插入两次,这表明存储过程可能在每个循环中被调用两次。

在这种情况下,这会在我的数据库中产生 10 万条记录。我还可以验证是否有问题,因为 firebug 返回一个红色错误(但它没有指定任何内容,也没有指定任何代码,也没有对遇到的错误进行任何描述)。

有趣的是,正如我所提到的,当循环达到 10K 时,每条记录都会正确插入(每个循环只调用一次存储过程)并且 firebug 不会抛出任何错误(它返回成功)。似乎有一个临界数量的循环开始失败。

4

0 回答 0