【发布时间】:2016-01-28 03:45:14
【问题描述】:
我得到一个 $_POST 参数如下:
Array ( [qty-1] => 1 [uniprice-1] => 22.00 [qty-2] => 2 [uniprice-2] => 12.00 )
用于在 db 中更新的 SQL:
foreach($_POST as $key => $value) {
$q = "UPDATE `table` SET ";
$q .= "stock=stock + '".$value."', ";
$q .= "price='".$value."' ";
$q .= "WHERE fid='".$fid."' AND vid='".$key."'";
echo $q.'<br />';
}
但是它的输出:
UPDATE `stock` SET stock=stock + '1', price='1' WHERE fid='9' AND vid='1'
UPDATE `stock` SET stock=stock + '22.00', price='22.00' WHERE fid='9' AND vid='1'
UPDATE `stock` SET stock=stock + '2', price='2' WHERE fid='9' AND vid='2'
UPDATE `stock` SET stock=stock + '12.00', price='12.00' WHERE fid='9' AND vid='2'
以如下形式更新查询的正确方法是什么?
UPDATE `stock` SET stock=stock + '1', price='22.00' WHERE fid='9' AND vid='1'
UPDATE `stock` SET stock=stock + '2', price='12.00' WHERE fid='9' AND vid='2'
【问题讨论】:
-
修复循环,最好选择一种更明智的方法来传递 POST 参数。
-
@Jon,你能举个例子吗?
-
添加html表单代码。或者尝试实现输入数组
-
这很容易发生 SQL 注入。此外,您可以使用输入数组语法来循环输入。 stackoverflow.com/a/20184680/3714134
标签: php mysql batch-updates