1
  1. 我有一个包含两列的 LibreOffice Calc 文件:id | new_price
  2. 我的 OpenCart 数据库表被调用product并具有以下相关列:id | price

我需要根据Calc 文件中的值price在数据库中更新.idnew_price

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

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

4

4 回答 4

0

使用 phpmyadmin 中的导入功能将文件加载到新表中,假设调用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
    )
于 2013-04-19T06:43:18.690 回答
0

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

  1. 用 PHP 编写一个导入/更新脚本,它将加载 CSV(XML、TXT - 使用您熟悉的那个...)文件(从您的 Calc 文件创建)并循环更新所有产品...
  2. 与 1 相同。但不是 CSV 您将使用带有适当 XLS 解析器的原始 XLS 文件...
  3. 使用phpMyAdmin将文件导入新(临时)表并运行查询以使用新临时表中的值更新产品 - 查询检查Andrius 的答案

假设您坚持使用第一个选项(因为第三个选项已经回答,而第二个选项使用正确的解析器非常相似)并且最终的 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 循环中,a$line是当前正在读取的 CSV 文件中的一行。

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

于 2013-04-19T09:15:52.263 回答
-1

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

于 2013-04-19T06:42:58.487 回答
-2

加载数据并插入到您的 OpenCart 表中

将数据输入文件“../LibreOffice_Calc.txt”加载到表 OpenCart

于 2013-04-19T07:01:39.860 回答