Мой запрос foreach не работает, и я получаю сообщение об ошибке - PullRequest
0 голосов
/ 01 марта 2020

Я получаю предупреждение: в сообщении foreach () указан неверный аргумент с кодом ниже.

Идея состоит в том, что у меня есть 2 таблицы, одна из которых является таблицей запасов, в которую импортировано большое количество данных. с этим ежедневно, и связано. Другая таблица (хотя это и не родительская таблица) представляет собой список сайтов, у них есть общее поле с именем StockName.

Идея этого кода в том, что при запуске предполагается, что l oop на всех сайтах в таблице сайтов найдите поле StockName, затем используйте его для поиска последнего значения в таблице stockdetails, а затем обновите таблицу Site, обновив информацию. Вот теория, вот код:

$rstmp = CustomQuery("SELECT * FROM Sites");
$datatmp = db_fetch_array($rstmp);
$SitePk = $datatmp['SitePk'];

foreach ($SitePk as $item)
{
echo $item."<BR>";
$rstmp2 = CustomQuery("SELECT * FROM ImportStockDetails where StockName='".$datatmp['StockName']."' ORDER BY `Date` DESC LIMIT 1");
$datatmp2 = db_fetch_array($rstmp2);

$latestdate = $rstmp2["LastStockDate"];
$latestcylpropane = $rstmp2["PropaneCylinders"];
$latestcylbutane = $rstmp2["ButaneCylinders"];
$latestbulkpropane = $rstmp2["BulkPropane"];
$latestbulkbutane = $rstmp2["BulkButane"];
$latesttotal = $latestcylpropane+$latestcylbutane+$latestbulkpropane+$latestbulkbutane;
$latestratio = $latesttotal/$datatmp['SiteMaxCapacity'];

global $dal;
$dal_table = $dal->Table("Sites"); 
$dal_table->Param["SitePk"] = $item; 
$dal_table->Value["LatestPropaneCylinderStock"] = $latestcylpropane;
$dal_table->Value["LatestButaneCylinderStock"] = $latestcylbutane;
$dal_table->Value["LatestBulkPropaneStock"] = $latestbulkpropane;
$dal_table->Value["LatestBulkButaneStock"] = $latestbulkbutane;
$dal_table->Value["LatestTotalStock"] = $latesttotal;
$dal_table->Value["`Stock/LimitRatio`"] = $latestratio;
$dal_table->Value["LastStockDate"] = $latestdate;

$dal_table->Update();
}

1 Ответ

1 голос
/ 01 марта 2020

Вы получаете предупреждение, потому что $SitePk это не массив, это просто значение. Вы должны попробовать $datatmp как db_fetch_array($rstmp); возвращаемый массив, который хранится в $ datatmp.

...