PHP循环中的多次插入
我正在运行以下PHP脚本,该脚本通过jquery使用标准的$.ajax调用调用。此PHP脚本通过存储过程将多条记录插入数据库。此过程是一个简单的插入 PHP脚本是PHP循环中的多次插入,php,mysql,loops,procedures,Php,Mysql,Loops,Procedures,我正在运行以下PHP脚本,该脚本通过jquery使用标准的$.ajax调用调用。此PHP脚本通过存储过程将多条记录插入数据库。此过程是一个简单的插入 PHP脚本是 include_once '../Connections/define_connections.php'; $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DBNAME); $mysqli->set_charset("utf8"); for ($q=0;$q<50000;$q++){
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();
问题是,当循环数约为10K时,此代码工作正常,但当循环数高于该数字时,例如,如图所示的50K,则会出现一些问题。每个记录插入两次,这可能表示每个循环调用存储过程两次
在这种情况下,我的数据库中会产生100K条记录。我还可以验证是否有错误,因为firebug返回了一个红色错误(但它没有指定任何内容,也没有指定任何代码,也没有对遇到的错误进行任何描述)
有趣的是,正如我提到的,当循环达到10K时,每个记录都被正确插入(每个循环只调用一次存储过程),firebug不会抛出任何错误(它返回成功)。似乎有一个临界数量的循环开始失败。OMG您在那里做什么?您能制作数据块并逐个插入吗?这将是一个解决方案,我猜有必要在每次迭代时准备查询吗?->bind_param()不应该在$v3变量之后吗?你可以,但这取决于你在做什么,如果这是必要的。。。也同意@OrangePill可能会对你有所帮助
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