如何使用一个查询更新SQL中的所有行?

时间:2014-01-10 12:44:45

标签: php mysql

我有一个现有的Prestashop数据库,我对它进行了一些小修改。我创建了一个单独的PHP页面,它从产品表中获取数据(只有我需要的数据),并向我显示所有产品,这些产品一个接一个地存在。我还有一个更新产品的功能,我按下EDIT。

因此,简单来说,我可以为每次点击更新单个产品。但是现在我有大约220种产品,为了更新每种产品的价值(价格),现在,我必须为每种产品点击EDIT,220次。

有没有办法在点击按钮后进行查询以更新所有行?

Bellow我将从剧本中向您展示一些基本部分:

GET功能:

<?php

$strSQL = "SELECT * FROM ps_product";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");

while($objResult = mysql_fetch_array($objQuery))
{
?>
<!-- HTML CODE -->
<? } ?>

每种产品的更新功能

if($_POST["hdnCmd"] == "Update")
{
    $strSQL = "UPDATE ps_product_shop SET ";
    $strSQL .="id_product = '".$_POST["txtEditid_product"]."' ";
    $strSQL .=",price = '".$_POST["txtEditprice"]."' ";
    $strSQL .=",active = '".$_POST["txtEditactive"]."' ";
    $strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' ";
    $objQuery = mysql_query($strSQL);
    if(!$objQuery)
    {
        echo "Error Update [".mysql_error()."]";
    }

}

$ _ POST [&#34; hdnEditid_product] 是从表中获取的产品ID值。


请帮助我了解如何制作类似的** UPDATE功能 ** **,它会立即更新所有行(product_id)?< /强>

作为一个例子,我必须解决这段代码:

if($_POST["UPDATEALLPRODUCTS"] == "Update")
{
    $strSQL = "UPDATE ps_product_shop SET ";
    $strSQL .=",price = '".$_POST["txtEditprice"]."' ";
    $strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' ";
    $objQuery = mysql_query($strSQL);
    if(!$objQuery)
    {
        echo "Error Update [".mysql_error()."]";
    }
}

但我必须在这里添加/更改:

$strSQL .="WHERE id_product = '".$_POST["hdnEditid_product"]."' ";

4 个答案:

答案 0 :(得分:2)

要将所有行更新为相同的值,请运行此查询

UPDATE ps_product_shop SET price='".$_POST["txtEditprice"]."';

注意:ps_products_shop中的每个记录都会获得相同的价格值。

答案 1 :(得分:1)

如果您坚持使用单个查询,可以采取一种方法:

<?php
    $product_updates = array("1" => "500", "2" => "1299.99");
    $sql_query = "UPDATE my_database.products SET price = CASE id ";
    foreach ($product_updates as $key => $value) {
        $sql_query .= "WHEN '$key' THEN '$value' ";
    }
    $sql_query .= "END;";
    mysql_query($sql_query);
?>

答案 2 :(得分:1)

这个怎么样?

制作如下数组: id =&gt;价格,然后:

        $prices = array(
            1=>300,
            5=>180,
            ...
        );
        foreach ($prices as $id => $price) {
            $query = "UPDATE ps_product_shop SET price='".$price."' WHERE 
            id_product='".$id."' ";
            mysql_query($query);
        }

答案 3 :(得分:1)

我假设页面已经拥有您需要的更新价格/信息,因此它只是将php变量删除

UPDATE ps_product_shop SET price
 = CASE 
 WHEN id_product= $id_product_1
 THEN '$edited_price_1'
 WHEN id_product = $id_product_2
 THEN '$edited_price_2'

如果没有看到表单结构,很难看到正确的变量名称是什么,但希望你可以使用代码并使用它,我必须做类似的事情并让PhP使用这种方法自动调查查询