首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP在MySQL中一次更新多行

问用PHP在MySQL中一次更新多行
EN

Stack Overflow用户
提问于 2012-06-20 14:56:01
回答 1查看 696关注 0票数 0

我有一个文本文件,其中包含例如公司名称、产品和价格。数据库中大约有200条记录,文本文件中的记录略多一点。现在,我想通过一个sql查询将所有价格更新到db。我已经尝试过了:

代码语言:javascript
复制
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中,但在这种情况下,我必须更新现有值并在以后添加缺少的值。谁能帮帮忙?:)

EN

回答 1

Stack Overflow用户

发布于 2012-06-20 15:12:30

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

代码语言:javascript
复制
INSERT INTO table (product_id, price) VALUES (1, 1.323),(2, 3434) ... (200, 2.333) ON DUPLICATE KEY UPDATE price = VALUES(price)

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11114339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档