【发布时间】:2012-07-19 09:17:59
【问题描述】:
我试图更新我的数据库中的 100.000 行,下面的代码应该这样做,但我总是得到一个错误:
错误:命令不同步;你现在不能运行这个命令
因为它是一个更新,所以我不需要结果,只想摆脱它们。使用 $count 变量是为了让我的数据库获得大量更新而不是一次大更新。 (由于数据库的某些限制,一个大更新无法正常工作)。
我尝试了很多不同的东西,比如 mysqli_free_result 等等......没有任何效果。
global $mysqliObject;
$count = 0;
$statement = "";
foreach ($songsArray as $song) {
$id = $song->getId();
$treepath = $song->getTreepath();
$statement = $statement."UPDATE songs SET treepath='".$treepath."' WHERE id=".$id."; ";
$count++;
if ($count > 10000){
$result = mysqli_multi_query($mysqliObject, $statement);
if(!$result) {
die('<br/><br/>Error1: ' . mysqli_error($mysqliObject));
}
$count = 0;
$statement = "";
}
}
【问题讨论】:
-
这是准备好的语句的绝对理想人选。它们将更易于使用且效率更高。我个人从不使用
_multi_query(),麻烦大于价值。 -
我从来没有用过准备好的陈述,你能用准备好的陈述代替我的回答吗
-
@SebastianOberste-Vorth
$treepath是什么类型的数据?是字符串吗?
标签: php mysql sql database performance