【问题标题】:Delete image id for deleted image删除已删除图像的图像 ID
【发布时间】:2018-08-23 16:01:46
【问题描述】:

我从我的 ftp 文件夹中删除了一些图像,但在我的 SQL 数据库中,产品仍然链接到这些图像,因此在我的商店中它们变成了空白图像。 我想知道我的数据库有一种方法可以检查文件是否存在,如果不存在则清除图像表上的字段。

希望我能稍微解释一下。

编辑:使用 phpmyadmin 的提问者建议(参见 cmets)“这是来自网站的数据库。我使用 plesk,所以我认为它是 MySQL。'

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。您可能最好用您选择的语言编写一个程序来执行此操作(当然,假设您不能只从备份中恢复丢失的图像)。或者,使用“select concat('@if not exist',illustration,'echo ',illustration,'exist') from webcatalogue where illustration is not null and illustration ''”的一些sql,将其输出到一个 .bat 文件,然后从图像文件夹中运行它,然后手动清除图像字段(如果没有太多)。顺便说一句,如果您确定了您正在使用的确切 RDBMS,这将有所帮助。
  • 您好,Mandy,感谢您的回复。我基本上从未使用过 SQL,而且我正试图让事情自己工作,所以我不太了解你所说的。我正在使用 PHPMyadmin,但目前正在下载 SSMS。我在网上找到了这个tech-recipes.com/rx/30527/…,但不知道在哪里应用它
  • 您好,关键是您使用的是哪个数据库平台。 SSMS 和您引用的链接都听起来像是 SQL Server,但您确定吗?因为 phpmyadmin 听起来像是 MySQL。这个问题的答案确实会影响建议。
  • 它是来自网站的数据库。我使用 plesk,所以我认为它是 MySQL。
  • 请注意,在技术食谱链接上尝试 SSMS 或存储过程是没有意义的,因为两者都与 SQL Server 相关。请编辑您问题上的标签以显示 mysql,尤其是 plesk,这应该会让更多知识渊博的人参与其中。

标签: mysql database image opencart plesk


【解决方案1】:

您可以在 OpenCart 框架中执行此操作,如下所示:

打开这个文件:

admin\controller\common\header.php

查找:

$data['logged'] = true;

在后面添加:

// Select all products with image
$query = $this->db->query("SELECT product_id, image FROM " . DB_PREFIX . "product WHERE image <> ''");
if ($query->num_rows) {
    foreach ($query->rows as $product) {
        // If product image does not exists, update product and set image to ''
        if (!is_file(DIR_IMAGE . $product['image'])) {
            $this->db->query("UPDATE " . DB_PREFIX . "product SET image = '' WHERE product_id = '" . (int)$product['product_id'] . "'" );
        }
    }
}

现在访问管理面板中的页面。

注意:您可能需要清除修改缓存。转到扩展/修改/单击刷新按钮。

完成后,你不需要上面的代码,从你的 header.php 中删除它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2017-06-26
    • 2012-05-29
    相关资源
    最近更新 更多