簡體   English   中英

通過單個查詢更改多個MySQL字段-產品代碼銷售

[英]Change multiple MySQL fields with single query - product code sales

我有一個出售產品的網站,每個產品都有自己的產品代碼。 問題是最近我們將所有產品代碼更改為所有產品。

因為今天以前插入MySQL的所有銷售都使用舊產品代碼,所以當我嘗試獲取報告以查看一個產品已售出多少時,系統會找到0,因為當舊銷售插入舊產品時,它會尋找新產品代碼一。

解:

即使很痛苦,也沒有其他方法可以更新所有已售出並插入MySQL的產品,並以此方式用新的產品代碼更新舊的產品代碼。

我需要這樣更新:

    $update = mysqli_query($database, "
update `sales` SET code = 0001 WHERE `code` = '4574645448458'
");

唯一的問題是,它僅使用該產品代碼更新第一個產品,但是我出售的產品中有成千上萬個使用相同產品代碼的產品...

如何以某種方式解決這個問題?

我將要更改的示例:

0001的代碼4574645448458 0002的代碼4574645448459

等等

這是Marc B的建議示例。
使用准備好的語句 ,然后對每對“舊/新”值執行語句

准備好的語句可以重復執行。 每次執行時,將評估綁定變量的當前值並將其發送到服務器。 該語句不會再次解析。 語句模板不會再次傳輸到服務器。

例如:

// define an array with all of the code changes as "key/value" pairs
$changes=array(
    '4574645448458' => '0001',
    '4574645448459' => '0002',
    ....
);

// define the query string with placeholders
$sql="UPDATE `sales` SET `code`=:new_code WHERE `code`=:old_code;";

// prepare the statement and set up variables to be bound upon execution
$q=$database->prepare($sql);
$q->bind_param(':new_code',$new_code);
$q->bind_param(':old_code',$old_code);

// iterate through "changes", defining the "old" and "new" values for each code change
// execute the prepared statement with each pair of values
foreach ($changes as $old_code => $new_code) {
    $q->execute();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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