PHP批量更新$_POST值

标签 php mysql batch-updates

我得到了一个 $_POST 参数如下:

Array ( [qty-1] => 1 [uniprice-1] => 22.00 [qty-2] => 2 [uniprice-2] => 12.00 ) 

使用 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'

最佳答案

试试这个

<?php
// Input
$_POST['qty-1']=1;$_POST['uniprice-1']=22.00;$_POST['qty-2']=2;$_POST['uniprice-2']=12.00;


$x=0;$fid=9;
foreach($_POST as $key => $value) {


    $q  = "UPDATE `table` SET ";
    $key=str_replace("qty-","",$key);
    $value2=str_replace("uniprice-","",$key);
    $q .= "stock=stock + '".$value2."', ";
    if($x%2!=0)
    {
    $q .= "price='".$value."' ";
    $q .= "WHERE fid='".$fid."' AND vid='".$fkey."'";
    echo $q.'<br />';
    }
    $fkey=$key;
    $x++;
}
?>

关于PHP批量更新$_POST值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33389864/

相关文章:

mysql - WITH语句VS子查询

javascript - 自动保存用户输入的内容——最聪明的实现方式?

mysql - Laravel 当足够n条记录时如何批量插入数据库?

java - 如何使用 Spring 在 Postgresql 中存储 java.util.ArrayList

php - 如何根据值删除特定的 XML 子节点

php - 使用方法在 Laravel Eloquent 中选择特定列

php - 发帖到错误的类别

mysql - sql : select uppercase columns in database

PHP gzipping JSON,保存到内存缓存... Node.js 服务 - 正确的 header ?

sql - 数据库批量更新