簡體   English   中英

Mysql_query更新

[英]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預備語句的理想選擇。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM