Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP循环中的多次插入_Php_Mysql_Loops_Procedures - Fatal编程技术网

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++){

我正在运行以下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++){
    $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