在MySQL数据库中更新价格 我有一个LibreOffice计算文件,有两列:id | new|u price 我的OpenCart数据库表名为product,具有以下相关列:id | price

在MySQL数据库中更新价格 我有一个LibreOffice计算文件,有两列:id | new|u price 我的OpenCart数据库表名为product,具有以下相关列:id | price,mysql,phpmyadmin,opencart,Mysql,Phpmyadmin,Opencart,我需要根据计算文件中的id和new\u price中的值更新数据库中的price 我有phpmyadmin可用,但我不知道如何做到这一点 您能指导我如何实现这一点吗?您需要学习如何用php读取文件。您需要提取每个id的价格并将其更新到数据库中。了解函数。使用phpmyadmin中的导入函数将文件加载到一个新表中,例如调用new\u table,然后执行: UPDATE product SET price = ( SELECT

我需要根据计算文件中的
id
new\u price
中的值更新数据库中的
price

我有phpmyadmin可用,但我不知道如何做到这一点


您能指导我如何实现这一点吗?

您需要学习如何用php读取文件。您需要提取每个id的价格并将其更新到数据库中。了解函数。

使用phpmyadmin中的导入函数将文件加载到一个新表中,例如调用
new\u 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
    )

加载数据并插入到OpenCart表中


将数据填充“../LibreOffice\u Calc.txt”加载到OpenCart表中

好的,您有多个选项来实现这一点

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

    1;25.900
    3;19.990
    11;5.250
    ...
    
    现在您只需要加载文件并使用函数-检查PHP文档以了解如何使用它。在while循环中,只需调用以下SQL查询:

    $query = "UPDATE `" . DB_PREFIX . "product` SET `price` = {$line[1]} WHERE `product_id` = {$line[0]}";
    
    假设在while循环中,
    $line
    是当前正在读取的CSV文件中的一行


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

    您的回答没有说明解决方案。使用
    file\u get\u contetns()
    确实是不够的。尝试改进你的答案!这将尝试插入新值。如果他将此用于
    产品
    表,则会导致错误。尝试改进你的答案…非常感谢你的建议。我在db的测试副本上做了这个。它产生了不必要的影响,即旧_表中所有不在新_表中的价格都被设置为0…@user2298034我已经编辑了查询,现在检查它-它应该可以工作了。感谢更新脚本。但仍然有一个不必要的影响,即新表中不存在的所有产品的价格都为0。我在脚本中添加了一个
    WHERE
    部分,以消除不必要的影响。有很多方法,但这可能是最简单的:)希望,现在一切都适合你:)非常感谢。问题解决:)非常感谢您的帮助。非常感谢您的帮助,shadyyx。我认为方法3现在是最相关的——但有了#1,我可以更容易地在未来更新价格。问题仍然是#3中的查询仍然更新所有价格。新的价格只有一个子集的总产品。并且所有未包含在新价格中的产品都设置为0…@user2298034 Andrius添加了一个
    条件,其中
    条件应能明确解决问题;-)是的,
    #1
    解决方案在将来是可重复使用的,而使用
    #3
    您将不得不每次清理和重新导入数据…非常感谢,我现在已经整理好了。你们都很有帮助。@user2298034然后点击+1查看对你们有帮助的内容;-)