php foreach循环只返回数组中第一次迭代的值

php foreach循环只返回数组中第一次迭代的值,php,mysql,arrays,foreach,inner-join,Php,Mysql,Arrays,Foreach,Inner Join,我似乎无法确定为什么我的foreach循环能够循环创建的所有5个ProductionOrderID,但只返回第一个ID的数据 据我所知,数组正在正确循环,因为您可以在此处看到当前结果:但奇怪的是ID:2没有生成表,ID 5创建了2个表,根据刚刚链接的imgur屏幕截图,所有表都为空 我仔细检查了我的样本数据,每个表有5条唯一的记录,没有重复或问题 编辑:1 我忘了提及期望的结果,以澄清我希望循环如何工作。请看这个截图:(干杯沙子) 编辑:2 以下是SQL的导出: 这是我的ERD,如果它有用的话:

我似乎无法确定为什么我的foreach循环能够循环创建的所有5个ProductionOrderID,但只返回第一个ID的数据

据我所知,数组正在正确循环,因为您可以在此处看到当前结果:但奇怪的是ID:2没有生成表,ID 5创建了2个表,根据刚刚链接的imgur屏幕截图,所有表都为空

我仔细检查了我的样本数据,每个表有5条唯一的记录,没有重复或问题

编辑:1 我忘了提及期望的结果,以澄清我希望循环如何工作。请看这个截图:(干杯沙子)

编辑:2 以下是SQL的导出: 这是我的ERD,如果它有用的话:

编辑:3 新的、更新的代码(谢谢):


我弄明白了为什么会发生这种情况,这是由于连接类型
内部
会帮助您理解

发现了为什么只显示1批数据的问题。这是因为您正在均衡p.ProductionOrderID=b.BatchID
,所以发生的情况是查询将您的生产ID与批次ID匹配,并且您的批次ID是唯一的,因此不存在重复项,从而导致显示匹配行中的单个数据记录。您真正想要做的是匹配批处理表中的生产ID,因为这是生产表和批处理表之间的关系。现在,当您运行此操作时,它将绘制表格,直到批处理结束

如果您想在HTML中的一列中显示所有批处理详细信息,则建议
while
foreach
并且您不需要另一个
SQL
,您已经选择了行。例如:
$row[“批次数量”]

这是我的解决方案

if ( $result = $mysqli->query("
    SELECT * 
FROM ProductionOrder AS p
LEFT JOIN ProductionOrderStatus AS s ON ( p.ProductionOrderID = s.ProductionOrderStatusID ) 
LEFT JOIN NotGood AS n ON ( p.ProductionOrderID = n.NGID ) 
LEFT JOIN BatchOrder AS b ON ( p.ProductionOrderID = b.ProductionOrderID)//Changed this equation 
LEFT JOIN Brand AS bd ON ( p.ProductionOrderID = bd.BrandID ) 
LEFT JOIN CustomerOrder AS co ON ( p.ProductionOrderID = co.COID ) 
LEFT JOIN Customer AS c ON ( p.ProductionOrderID = c.CustomerID ) 
LEFT JOIN CustomerOrderStatus AS cos ON ( p.ProductionOrderID = cos.COStatusID )
    WHERE p.ProductionOrderID='$OrderId'")

在while循环中键入

echo "<pre>";
print_r($row);
echo "</pre>";
echo”“;
打印(行);
回声“;

因此,您可以查看数据的行为。我认为主要问题来自于您的选择查询

是否希望每页循环5条记录,或者每次运行
SQL
时循环5条记录?或者只想在表中显示记录?我想循环存在的每个记录(ProductionOrder);当前为5,但可能为5或500。好的,您能告诉我
$POID
do是什么吗?这是我尝试创建的一个数组,它存储所有
ProductionOrderID
,其中在
foreach
循环中被称为
$OrderId
。目前的结果是这样的:是的,我想弄明白的是为什么要使用
foreach
如果你想显示数据表中的内容,只需使用
循环它就会循环,直到没有更多的数据显示。非常感谢!!!对于视觉示例,这无疑有助于澄清不同的类型。再次感谢您花时间来理解和帮助。我注意到它没有显示每个生产订单超过1个批次或客户订单。关于如何循环浏览它们,你有什么建议吗?对不起,当你发表评论时我是离线的。没问题您的问题也给了我一个机会来复习一下我的
SQL
。关于您的第二条评论,这是在更正
SQL
之后的评论吗?您的意思是,当同一客户订单下有更多数据时,您的系统仅显示1组数据?您使用的是相同的
SQL
还是不同的?嗨,沙,不用担心。所以我用更新的代码再次更新了我的原始问题,这就是我现在正在使用的。在这里,您可以看到它对每个新的
生产订单
都非常有效:唯一的问题是它只向我显示了每个
生产订单
1个
批订单
和1个客户订单。
ProductionOrder
可以附加多个
BatchOrder
,而
BatchOrder
可以附加多个
CustomerOrder
。我花了一段时间试图在一个循环中创建一个循环,但到目前为止没有太多成功!啊,好的,我想这可以通过使用
SQL
it本身来实现。你能帮我一个忙,给我一个
SQL
粘贴箱,里面有一些数据,我可以重新创建你说的场景,这样我就可以自己测试了。
echo "<pre>";
print_r($row);
echo "</pre>";