2017-01-02 13 views
1

私は何が起こっているのか全く分かりません。Prestashopのテーブルsearch_indexに挿入すると失敗します

私はこのようなテーブルps_search_indexINSERTをしようとしている:

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

$id_productがある場合、それは動作しません。

しかし、私は例えば書くときに働いています。 id_productは、もちろんINTで、この場所の他の値は動作します。

もちろん他のエラーはありません。 どうすればいいですか?

+0

'$ id_product'が正しく設定されていないと思いますか?もしあなたが 'var_dump($ id_product);'と表示されているのであれば? – defuzed

+0

はい、それは例えばです。 1340、他の列に最適です。 – Szmerd

答えて

1

私はこの使用してチュートリアルをやりました。

データベーステーブルのプライマリキーは一意である必要があるため、クエリに追加する組み合わせが既にテーブルに存在している必要があります。これを修正するには、新しい行を挿入する前にチェックを適用することができます。

1

これを試してみてください:

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をキャストすることをお勧めします。この場合、Searchクラスのdoと同様に、ON DUPLICATE...を追加する必要があります。テーブルの主キーである http://blog.belvg.com/developer-tips-how-prestashop-search-works.html

+0

動作しません。 ps_search_wordのみが更新されますが、_indexはありません – Szmerd

1

PrestaShopの、id_productid_wordの組み合わせのps_search_indexデータベーステーブルでは:

関連する問題