我实现了使用CSV更新表prestashop-> product_carrier的脚本。我的CSV有两列。
“参考”列和“真/假”列。当我浏览CSV且引用等于0时,我在表3行中插入了有关运营商引用的内容。我的问题是,当我浏览CSV时,var_dump向我显示NULL,而我却不明白为什么。这是我的代码:
<?php
require(dirname(__FILE__) . '/config/config.inc.php');
$dir_fichier = $_SERVER['DOCUMENT_ROOT'].'/IMPORTS/STOCK_EXPRESS_FR'.'.csv';
tntProduct($dir_fichier);
function tntProduct($dir_fichier)
{
$csv = new SplFileObject($dir_fichier);
$csv->setFlags(SplFileObject::READ_CSV);
$csv->setCsvControl(';');
$carriersFR = [
0 => 1,
1 => 72,
2 => 87
];
foreach($csv as $ligne){
echo '<pre>';
if ($ligne[1] == 0) {
getProductsIds($ligne[0], $carriersFR);
}
echo '</pre>';
}
}
function getProductsIds($reference, $carriers)
{
$sql = Db::getInstance()->executeS('
SELECT p.id_product
FROM '._DB_PREFIX_.'product p
WHERE p.reference = '.'"'.$reference.'"');
foreach ($sql as $key => $item) {
$productsIds[$key]['id_product'] = (int)$item['id_product'];
$productsIds[$key]['id_carrier_reference'] = $carriers;
$productsIds[$key]['id_shop'] = 1;
}
foreach ($productsIds as $productsId) {
$product[] = $productsId;
}
var_dump($product);
return $productsIds;
}
它显示
示例CSV:
831S587 0
822 0
10601 13
61703111 0
谢谢您的帮助。