Während ich eine Shopping-Site zu kodieren, muss ich Produktbestand aktualisieren. Aber die Sache ist, natürlich Warenkorb kann die gleichen Elemente ein paar Mal haben. Was ist der beste Weg, um es zu aktualisieren?Aktualisierung SQL-Werte mit Array, die ein paar Mal aufgetretene Artikel haben
Ich versuchte IN
, aber die folgende SQL-Abfrage gibt 3 Elemente zurück.
SELECT *
FROM `products`
WHERE id
IN (3, 4, 4, 6)
LIMIT 0 , 30
Hier ist meine Lösung, aber ich denke nicht, dass dies der beste ist.
$cart = array(1,3,4,4,5,8,22,22);
$itemlist = array_count_values($cart);
foreach($itemlist as $itemid=>$ocurrence){
$SQL = "UPDATE products SET stock = stock-".$ocurrence." WHERE id = ".$itemid;
mysql_query($SQL);
}
Ich denke, diese Methode ist in Ordnung. Sie müssen Aktualisierungen in einer Schleife durchführen, wenn sie unterschiedliche Werte erhalten. –
Vereinbaren Sie mit @MichaelBerkowski. Wenn Sie nicht ein nachweisbares Leistungsproblem haben (z. B. eine große Anzahl von Benutzern oder eine große Anzahl von Produkten/Wagen), würde ich bei Ihrer Methode bleiben. Es kann möglich sein, das Update in einer einzigen Abfrage mit etwas cleverer Codierung auszuführen, aber es wird eine komplexe Lösung sein, die auf lange Sicht schwieriger zu warten ist. – mellamokb
Sie haben es wahrscheinlich schon einmal gehört, aber ziehen Sie in Erwägung, zu einer neueren API zu wechseln, die vorbereitete Anweisungen wie MysQLi oder PDO unterstützt. Das würde die Leistung der Schleife ein wenig verbessern und die Sicherheit bei anderen Abfragen erhöhen. –