Php 在Prestashop中插入表搜索索引失败

Php 在Prestashop中插入表搜索索引失败,php,mysql,prestashop,Php,Mysql,Prestashop,我完全不知道发生了什么事 我正在尝试将INSERT插入表ps\u search\u index,如下所示: $sql = 'INSERT INTO ps_search_index (id_product,id_word,weight) VALUES ('.$id_product.','.$getID.',9)'; Db::getInstance()->Execute($sql); 如果有$id\u产品,它就不起作用 但当我写作时,它就起作用了id\u产品当然是INT和这

我完全不知道发生了什么事

我正在尝试将
INSERT
插入表
ps\u search\u index
,如下所示:

$sql = 'INSERT INTO ps_search_index (id_product,id_word,weight)
         VALUES ('.$id_product.','.$getID.',9)';
Db::getInstance()->Execute($sql);
如果有
$id\u产品
,它就不起作用

但当我写作时,它就起作用了
id\u产品
当然是
INT
和这个地方的任何其他值

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

试试这个:

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
);

我始终建议强制转换变量。在这种情况下,您必须在复制上添加
,就像在
搜索
类中一样。

我使用教程完成了此操作:

在PrestaShop的
ps\u search\u index
数据库表中,
id\u product
id\u word
的组合是该表的主键


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

我只能想象
$id\u product
设置不正确?如果您
var\u dump($id\u产品)显示了什么吗?是的,是1340,它非常适合其他栏目。不工作。只有ps_search_word更新得很好,但是索引没有