使用PHP在MySQL中一次更新多行

时间:2012-06-20 06:56:01

标签: php mysql

我有一个文本文件,其中包含公司名称,产品和价格。数据库中有大约200条记录,文本文件中只有一条记录。现在我想通过一个SQL查询将所有价格更新为db。我试过这个:

for($i = $start_row; $i < $stop_row; $i += 3)
...
$prices = array($price1, $price2, price3);
$pricesfloat = array_map('floatval', $prices);
...
$query = "UPDATE test3 SET price1 = $pricesfloat[0], price2 = $pricesfloat[1], price3 = $pricesfloat[2] WHERE company = '$company' AND product = '$product'";
mysql_query($query, $connection) or die(mysql_error());

mysql_affected_rows()返回0行。我可以使用INSERT INTO将所有值插入到db,但在这种情况下,我必须更新现有值并稍后添加缺失值。有人可以帮忙吗? :)

1 个答案:

答案 0 :(得分:0)

INSERT ... ON DUPLICATE KEY UPDATEhttp://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html,可能适合您的情况:

INSERT INTO table (product_id, price) VALUES (1, 1.323),(2, 3434) ... (200, 2.333) ON DUPLICATE KEY UPDATE price = VALUES(price)

批量更新的另一种方法是:

UPDATE table
INNER JOIN (
    (SELECT 'company1' AS company, 'product1' AS product, 'price1' AS price
    UNION ALL SELECT 'company2', 'product2', 'price2'
    ....
    UNION ALL SELECT 'companyN', 'productN', 'priceN') AS tmp 
) USING (company, product)
SET table.price = tmp.price