在Prestashop中插入表search_index失败

时间:2017-01-02 16:22:09

标签: php mysql prestashop

我完全不知道最新情况。

我正在尝试INSERT进入ps_search_index这样的表:

$sql = 'INSERT INTO ps_search_index (id_product,id_word,weight)
         VALUES ('.$id_product.','.$getID.',9)';
Db::getInstance()->Execute($sql);

如果有$id_product则无效。

但是当我写作时,它的工作。 1234. id_product当然是INT,而且这个地方的任何其他价值都有效。

当然没有其他错误。 我该怎么办?

3 个答案:

答案 0 :(得分:2)

试试这个:

Db::getInstance()->execute('
    INSERT INTO '._DB_PREFIX_.'search_index (id_product, id_word, weight)
    VALUES ('.(int)$id_product.', '.(int)$getID.', 9)
    ON DUPLICATE KEY UPDATE weight = weight + VALUES(weight)', false
);

我总是建议投射var。在这种情况下,您必须添加ON DUPLICATE...,就像在Search类中一样。

答案 1 :(得分:1)

答案 2 :(得分:1)

在PrestaShop的ps_search_index数据库表中,id_productid_word的组合是表格的主键。

由于任何数据库表的主键必须是唯一的,因此您的查询失败,因为您在查询中添加的组合必须已存在于表中。为了解决这个问题,您可以在插入任何新行之前应用检查。