繁体   English   中英

优化foreach循环写入MYSQL

[英]Optimising a foreach loop write to MYSQL

我有一张数据表,其中我在一个事务中更新多行。 下面的Foreach循环可以完美地工作,但是,如果表包含大量行,则可能会有相当大的延迟,大概是整个表逐行处理时。

即使我只更改一行中的一个字段,也会有很大的延迟(20秒),我再次假设这是因为循环遍历每一行。

//get data from form
$id2 = $_POST['id2'];
$status2 = $_POST['status2'];
$comment = $_POST['comments2'];

foreach ($id2 as $key2 => $value2){
$query3 = "UPDATE newthing SET comments='$comment[$key2]' WHERE id = $value2 ";
$query4 = "UPDATE newthing SET status='$status2[$key2]' WHERE id = $value2 ";

//execute query
mysql_query($query3);
mysql_query($query4);
}

有没有更有效的方法来执行此任务? 如果愿意使用java / ajax /任何其他工具,我愿意根据需要学习。 另外,我知道mysql_query现在已经很旧了,因此,如果有这样做的PDO方法,那就更好了。 我还没有完全了解PDO:-/

非常感谢,杰森

首先合并到单个更新中:

foreach ($id2 as $key2 => $value2){
    $query3 = "UPDATE newthing SET comments='$comment[$key2]', status='$status2[$key2]' WHERE id = $value2 ";

    //execute query
    mysql_query($query3);
}

然后开始学习有关准备好的语句/具有MySQLi或PDO扩展的绑定变量,以替换已弃用的MySQL扩展,并帮助防止SQL注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM