当我从第三方公司的原始数据文件中获取产品时,我需要创建一个cron脚本来处理产品(添加,删除,更新),当第三方公司发送新文件时(数据以;分隔),每当产品发生变化时(添加,删除,更新) .

我尝试使用Product类(来自Product.php)在商店中添加新产品 . 最初的问题是我收到了这个错误:

在importProducts.php中找不到类'ObjectModel'

我找到了一个明显的解决方案,就是在importProduct.php中的require_once配置和init文件中的config文件:

require_once(dirname(__FILE__).'/../config/config.inc.php');
require_once(dirname(__FILE__) . '/../init.php');

需求指向正确的文件 . 我的文件位于一个名为“crontasks”的新文件夹中 .

prestashop / crontaskt / import.php(import.php启动importProduct.php)

但现在出现了一个新错误:

致命错误:未捕获您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第7行的''附近使用正确的语法SELECT c.id_category
来自ps_category_product cp
LEFT JOIN ps_category c ON(c.id_category = cp.id_category)
INNER JOIN ps_category_shop category_shop ON(category_shop.id_category = c.id_category AND category_shop.id_shop = 1)
在哪里cp.id_category不在(18)
AND cp.id_product =在第791行的D:\ Travail \ BUSCI \ prestashop \ prestashop \ classes \ db \ Db.php中抛出

(它们没有出现,但在查询周围是
<pre> ... </ pre>而没有空格)问题是,我在数据库中检查过,列都是在那里,我不明白为什么在那条线上有问题 . 此外,我找不到该查询的文件 . 我查看了Product.php,发现一个非常相似但不完全相同:

$result = Db::getInstance()->executeS('
        SELECT c.`id_category`
        FROM `'._DB_PREFIX_.'category_product` cp
        LEFT JOIN `'._DB_PREFIX_.'category` c ON (c.`id_category` = cp.`id_category`)
        '.Shop::addSqlAssociation('category', 'c', true, null, true).'
        WHERE cp.`id_category` NOT IN ('.implode(',', array_map('intval', $categories)).')
        AND cp.id_product = '.$this->id
    );

Product.php中的第1051行,方法updateCategories .

我在Category.php或我查看的任何其他文件中找不到类似的东西 . 但是这个查询缺少内连接,所以我不知道那是不是真的那个 . 我想问题来自于=之后没有任何内容这一事实,但我不知道这只是一个字符限制(错误中打印的字符数量)还是错误 . 我感觉有点失落 .

我没有更改prestashop中的任何文件 . 这是我刚刚在计算机上安装的最新更新 . 测试在我的计算机上本地完成 .

我真的很感激一些帮助 .

对不起我的英语,这并不奇怪 .

Edit :

所以我在整个项目中搜索了该行的每个文件

INNER JOIN '._DB_PREFIX_.'category_shop

而且找不到它 . 我试图删除多余的空格,以防万一,但找不到这个SQL查询所在的文件 .