PrestaShop - 根据 php 上的参考更新价格
PrestaShop - Update price by reference on php
我每天收到 JSON 价格,我必须在网站上更新这些价格。我可以正确阅读 json 和 php,但我不知道如何更新产品价格。我试过直接修改数据库,但没有成功。 objective 是找到每个有特定参考的产品(通常是一个产品,但可能有一些重复),然后更改价格。我从JSON、reference和price中读取了这两个数据。到目前为止,我创建了一个全新的 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);
}
这段代码没有错误,也没有任何变化。
使用产品对象实现您的目标。
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();
}
这种方式更安全稳定
更新:
对于低于 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();
}
但在这种情况下,它有点失去意义。但是在产品对象中更新价格仍然更安全
我每天收到 JSON 价格,我必须在网站上更新这些价格。我可以正确阅读 json 和 php,但我不知道如何更新产品价格。我试过直接修改数据库,但没有成功。 objective 是找到每个有特定参考的产品(通常是一个产品,但可能有一些重复),然后更改价格。我从JSON、reference和price中读取了这两个数据。到目前为止,我创建了一个全新的 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);
}
这段代码没有错误,也没有任何变化。
使用产品对象实现您的目标。
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();
}
这种方式更安全稳定
更新:
对于低于 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();
}
但在这种情况下,它有点失去意义。但是在产品对象中更新价格仍然更安全