MySQL, einzelne Tabelle, mehrere Aktualisierungen, PHP einzelne Tabelle, mehrere Aktualisierungen
// Einzelne Tabelle, mehrere Aktualisierungen: Test-SQL: Erfolg (gibt die Anzahl der Aktualisierungen erfolgreich zurück, Fehler gibt 0 zurück)
// $d->execute("UPDATE ez_shop_goods SET inventory = CASE id WHEN 3 THEN 1 WHEN 4 THEN 1 WHEN 5 THEN 100 END WHERE id IN (3,4,5)");
Die Bedeutung dieser SQL besteht darin, das Inventarfeld zu aktualisieren. Wenn id=3 ist, ist der Wert von display_order 1. Wenn id=4 ist, ist der Wert von display_order 1. Wenn id=5 ist, ist der Wert von display_order 100.
In TP-Version konvertieren:
$goods_ids ist das ID-Array der zu aktualisierenden Tabelle
$value3 ist ein Array von Werten des Inventarfelds, das der ID
entspricht
Eine ID entspricht dem Wert eines Inventarfelds $ids = implode(',', array_values($goods_ids)); <code class="prettyprint linenums lang-php"> $ids = implode(',', array_values($goods_ids)); <br>
$sql = "UPDATE ez_shop_goods SET inventory = CASE id "; <br>
foreach ($value3 as $id => $ordinal) { <br>
$sql .= ' WHEN '.$ordinal['id'].' THEN '.$ordinal['inventory']; <br>
} <br>
$sql .= " END WHERE id IN ($ids)"; <br>
// dump($sql);exit;<br>
$res = $d->execute($sql);<br>
if($res == 0){<br>
$errcode = -1;<br>
return false; <br>
}
$sql = "UPDATE ez_shop_goods SET inventory = CASE id ";
foreach ($value3 as $id => $ordinal) {
$sql .= ' WHEN '.$ordinal['id'] THEN '.$ordinal['inventory'];
$ SQL. = "Ende WHERE ID in ($ IDs)";
// dump($sql);exit;