Php 我的foreach查询不起作用,我得到一个错误

Php 我的foreach查询不起作用,我得到一个错误,php,foreach,Php,Foreach,我收到一条警告:为foreach消息提供的参数无效,代码如下 我的想法是,我有两个表,一个是一个库存表,每天有大量的数据导入其中,并且是链接的。另一个表虽然不是父表,但它是一个站点列表,它们有一个名为StockName的公共字段 这段代码的思想是,在运行时,它应该遍历站点表中的所有站点,获取StockName字段,然后使用该字段查找stockdetails表中的最新值,然后使用最新信息更新站点表。这就是理论,下面是代码: $rstmp = CustomQuery("SELECT * FROM S

我收到一条警告:为foreach消息提供的参数无效,代码如下

我的想法是,我有两个表,一个是一个库存表,每天有大量的数据导入其中,并且是链接的。另一个表虽然不是父表,但它是一个站点列表,它们有一个名为StockName的公共字段

这段代码的思想是,在运行时,它应该遍历站点表中的所有站点,获取StockName字段,然后使用该字段查找stockdetails表中的最新值,然后使用最新信息更新站点表。这就是理论,下面是代码:

$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();
}

您收到警告是因为$SitePk不是数组,它只是一个值。您应该尝试使用$datatmp作为db_fetch_数组$rstmp;返回存储在$datatmp中的数组。

打印出$SitePk的内容,并确保它是您期望的内容。我们不知道CustomQuery或db_fetch_array做什么,但我敢打赌您的查询失败或返回的不是数组的内容。像这样…foreach$datatmp作为db_fetch_array$rstmp?事实上,我想我想使用查询来获取最新的值。有人能给我指出一篇文章,告诉我如何进行MySQL查询,其中字段值是子查询,例如按StockName链接表并返回该值的最新日期吗;foreach$datatmp作为$item{}。您可以出于您的目的使用SQL JOIN。好的,我正在尝试此操作,但它不起作用,它嵌套在现有的SELECT FROM查询中,并且是一个子行…即查询中的查询。从ImportStockDetails ORDER BY Date DESC LIMIT 1中选择test1,其中Sites.StockName=ImportStockDetails.StockName子查询1