更新MySQL数据库中的价格

时间:2013-04-19 06:38:38

标签: mysql phpmyadmin opencart

  1. 我有一个包含两列的LibreOffice Calc文件:id | new_price
  2. 我的OpenCart数据库表名为product,并包含以下相关列:id | price
  3. 我需要使用price中的值,根据Calc文件中的id更新数据库中的new_price

    我有phpmyadmin可用,但我不知道该怎么做。

    你能指导我如何实现这个目标吗?

4 个答案:

答案 0 :(得分:0)

使用phpmyadmin中的import函数将文件加载到新表中,假设调用new_table然后执行:

UPDATE 
    product
SET 
    price = 
    (
        SELECT 
            new_price 
        FROM 
            new_table 
        WHERE 
            new_table.id = product.product_id
    )
WHERE
    product.product_id IN 
    (
        SELECT
            id
        FROM
            new_table
    )

答案 1 :(得分:0)

好的,您有多种选择如何实现这一目标。

  1. 在PHP中编写一个导入/更新脚本,用于加载CSV(XML,TXT - 使用您熟悉的文件...)文件(从您的Calc文件创建)并在循环中更新所有产品。 ..
  2. 与1.相同而不是CSV您可以将原始XLS文件与适当的XLS解析器一起使用...
  3. 使用phpMyAdmin将文件导入新的(临时)表并运行查询以使用新临时表中的值更新产品 - 用于查询 Andrius的答案
  4. 假设您坚持使用第一个选项(因为第三个选项已经回答,第二个选项使用正确的解析器非常相似)并且最终的CSV文件如下所示:

    1;25.900
    3;19.990
    11;5.250
    ...
    

    现在您只需要加载文件并使用fgetcsv()函数 - 检查PHP文档以了解如何使用它。在while循环中,只需调用此SQL查询:

    $query = "UPDATE `" . DB_PREFIX . "product` SET `price` = {$line[1]} WHERE `product_id` = {$line[0]}";
    

    假设在您的while循环中$line是当前正在读取的CSV文件中的一行。

    然后,您可以将脚本用作新控制器(在其index操作中),或者将其作为新操作添加到您现有的产品控制器中......

答案 2 :(得分:-1)

你需要学习如何在php中读取文件。您需要提取每个id的价格并将其更新到数据库中。了解file-get-contents()功能。

答案 3 :(得分:-2)

加载数据并插入OpenCart表

LOAD DATA INFILE'../ LibreOffice_Calc.txt'INTO TABLE OpenCart