[英]Mysql_query UPDATE
我可以發誓我上周有這個工作,但是現在我得到了錯誤。
在PHP中,我有一個很大的CSV文件,該文件通過foreach循環運行,並且在此循環中,我創建了一個變量,向其自身添加了UPDATE行,如下所示:
foreach ($csv->data as $value){
$updater .= "UPDATE tblProduktData SET xtra = 2 WHERE id = '$value[1]';";
}
mysql_query("$updater") or die(mysql_error());
CSV文件包含3000行以上的內容,因此在循環中放入mysql_query()顯然會使進程變慢,因此不建議這樣做。
誰能告訴我我丟失了什么東西還是做錯了?
我們將暫時忽略以下事實:您使用的PHP擴展mysql_已被棄用(已計划從語言中刪除)已有很多年了。
由於某種原因,每次使用.=
語法在循環中都將添加到sql查詢中。 我認為您認為可以使用mysql_擴展名一次運行多個查詢,但您不能。
所以試試這個:-
foreach ($csv->data as $value){
$updater = "UPDATE tblProduktData SET xtra = 2 WHERE id = '$value[1]'";
mysql_query($updater) or die(mysql_error());
}
實際上,這是使用mysqli_或PDO預備語句的理想選擇。
嘗試這個:
$id = "0"; // initialze the ids to update with a non-existing value
// fetch all the ids into a variable
foreach ($csv->data as $value){
$id .= "," . $value[1]
}
$updater .= "UPDATE tblProduktData SET xtra = 2 WHERE id in (".$id.") ;";
mysql_query("$updater") or die(mysql_error());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.