当我从第三方公司的原始数据文件中获取产品时,我需要创建一个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查询所在的文件 .