我得到的JSON的每日价格必须在网站上更新。我可以用php正确读取json,但是我不知道如何更新产品价格。我尝试直接修改数据库,但没有成功。目的是找到每个具有特定参考的产品(通常是一个产品,但可能有重复的产品),然后更改价格。我从JSON中读取了这两个数据,即引用和价格。到目前为止,我创建了一个全新的php文件并正在尝试:
include(dirname(__FILE__) . '/config/config.inc.php');
include(dirname(__FILE__) . '/init.php');
foreach ($json_datos as $articulo){
$cod_articulo = $articulo["Cod_Articulo"]; //this comes from the previously read json
$precio_articulo = $articulo["PVP"]; //this comes from the previously read json
$query = "UPDATE `"._DB_PREFIX_."product` prod SET price=".$precio_articulo." WHERE prod.reference=".$cod_articulo.";";
Db::getInstance()->Execute($query);
}
此代码没有错误,也没有任何更改。
答案 0 :(得分:0)
使用Product对象实现您的目标。
foreach ($json_datos as $articulo) {
$cod_articulo = $articulo["Cod_Articulo"];
$precio_articulo = $articulo["PVP"];
$product = new Product(Product::getIdByReference($cod_articulo));
$product->price = $precio_articulo;
$product->update();
}
这样更安全稳定
UPD:
对于低于1.7.6的版本,您需要定义自己的方法
include(dirname(__FILE__) . '/config/config.inc.php');
function getIdByReference($reference)
{
if (empty($reference)) {
return 0;
}
if (!Validate::isReference($reference)) {
return 0;
}
$query = new DbQuery();
$query->select('p.id_product');
$query->from('product', 'p');
$query->where('p.reference = \'' . pSQL($reference) . '\'');
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query);
}
foreach ($json_datos as $articulo) {
$cod_articulo = $articulo["Cod_Articulo"];
$precio_articulo = $articulo["PVP"];
$product = new Product(getIdByReference($cod_articulo));
$product->price = $precio_articulo;
$product->update();
}
但是在这种情况下,它有点失去知觉。但是在产品对象内更新价格仍然更安全