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

我的理解是数组正确循环,因为你可以在这里看到当前结果:https://i.imgur.com/JWD3nis.png但奇怪的是ID:2没有生成表,ID 5有2个表创建,所有空白按照刚刚链接的imgur截图.

我加倍检查了我的样本数据,每个表有5个唯一记录,没有重复或我可以找到的问题.

编辑:1

我忘了提到所需的结果,以澄清我希望循环工作的方式.请看这个截图:https://i.imgur.com/4h7l49p.png(Cheers Sand).

编辑:3

新的更新代码(谢谢Sand):

include('OrderCore/connect-db.php');

$POIds = array();

if ($result = $mysqli->query("SELECT ProductionOrderID FROM ProductionOrder" ) ) {

while ($row = $result->fetch_object()) {

$POIds[] = $row->ProductionOrderID;

}

}

foreach ( $POIds as $index => $OrderId ) {

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.BatchID )

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( $row = $result->fetch_object() ) {

print "

Order: $OrderId

";

print "

print "

PO ID PO # Order Quantity Balance Left Production Date Production Order Status Not Good ID ";

print "

" . $row->ProductionOrderID . "";

print "

" . $row->PONum . "";

print "

" . $row->OrderQTY . "";

print "

" . $row->BalLeftNum . "";

print "

" . $row->ProductionDate . "";

print "

" . $row->ProductionOrderStatusID . "";

print "

" . $row->NGID . "";

print "";

print "

";

//BatchOrder

print "

print "

Batch ID Brand Name Batch Quantity Availability Date Remaining Balance Production Order ID ";

print "

" . $row->BatchID . "";

print "

" . $row->BrandID . "";

print "

" . $row->BatchQTY . "";

print "

" . $row->AvailDate . "";

print "

" . $row->RemainBal . "";

print "

" . $row->ProductionOrderID . "";

print "";

print "

";

//CustomerOrder

print "

print "

Customer ID Customer Name Invoice Quantity Invoice # Shipping Date Batch ID CO Status ";

print "

" . $row->COID . "";

print "

" . $row->CustomerID . "";

print "

" . $row->InvoiceQTY . "";

print "

" . $row->InvoiceNum . "";

print "

" . $row->ShipDate . "";

print "

" . $row->BatchID . "";

print "

" . $row->COStatusID . "";

print "";

print "

";

}

}

else

{

print "No results to display!";

}

}

$mysqli->close();

?>

解决方法:

我弄清楚为什么它会发生这是因为INNER this的连接类型会帮助你理解.

发现了为什么它只显示1批数据的问题.这是因为你等于p.ProductionOrderID = b.BatchID所以会发生什么是查询看起来将您的生产ID与批次ID相匹配,并且您的批次ID是唯一的,因此没有重复项导致从该匹配行显示单个数据记录.您真正想要做的是匹配批处理表中的生产ID,因为这是生产表和批处理表之间的关系.现在,当你运行它时,它将绘制表直到批处理结束.

如果要在HTML中的一列中显示所有批处理详细信息,则建议使用或预处理,并且不需要另一个SQL,您已经选择了行. EX:$行[ “BatchQTY”]

这是我的解决方案.

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'")

标签:php,arrays,mysql,inner-join,foreach

来源: https://codeday.me/bug/20190622/1264110.html

php if foreach个数记录,php foreach循环只返回数组中第一次迭代的值相关推荐

  1. 实现输入10个数,输出这10个数的和,平均值;输出该组数中数与数的最大差值;再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标

    实现输入10个数,输出这10个数的和,平均值:输出该组数中数与数的最大差值:再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标 int main() //程序 ...

  2. php 3个循环,For循环只发布数组的前3个元素 - PHP(For loop is only posting first 3 elements of array - PHP)...

    For循环只发布数组的前3个元素 - PHP(For loop is only posting first 3 elements of array - PHP) 我有阵列,可能有无限量的元素. 我试图 ...

  3. 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点

    利用for循环把遍历数组中的元素依次获取出来 数组索引号从0开始 所以i必须从0开始  i<6 <script>var arr = ['blue', 2, true, 4, 5, 6 ...

  4. Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字

    7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值.编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字 题目 题目描述与运行示例 破题 代码 21.11.11 ...

  5. 有15个数按从小到大的顺序存放在一个数组中。(折半查找)

    有15个数按从小到大的顺序存放在一个数组中.输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,输出"不在表中". 折半查找法的原理是:对于一个升序数组 ...

  6. 找出数组中不重复的值php_PHP查找数值数组中不重复最大和最小的10个数的方法...

    搜索热词 本文实例讲述了PHP查找数值数组中不重复最大和最小的10个数的方法.分享给大家供大家参考.具体如下: 1. PHP代码如下: PHP;"> //随机生成1万个元素的数组 fo ...

  7. 511遇见易语言循环遍历删除数组中重复成员方法

    方法3采用两次计次循环进行遍历和如果真进行判断,是最难理解的一种方法,本人感觉没有方法2好用,这里作为一种思考讲解学习参考. 511遇见易语言教程 视频教程源码 .版本 2 .支持库 spec.子程序 ...

  8. Vue如何循环提取对象数组中的值

    数据如下,提取name和callcount 第一种: getQueryCallStatistics("sesp1", this.provinceId).then((res) =&g ...

  9. vue 取数组第一个值_Vue如何循环提取对象数组中的值

    1.数据如下,提取name和callcount 2代码. getQueryCallStatistics("sesp1", this.provinceId).then((res) = ...

最新文章

  1. 阿里云峰会 | 统一召回引擎在搜索场景的应用实践
  2. 《风暴英雄》里那些超棒的游戏设计
  3. MAC 安装jenkins
  4. ***不是已知元素 原因可能是网站中存在编译错误
  5. linux服务器上装R语言,R语言 在linux上的安装
  6. couchdb java 连接_CouchDB客户端开发—Java版
  7. twitter中处理网页被iframe方式
  8. Python批量整理文件名小案例(附公众号第一批赠书活动中奖名单)
  9. (转载)排序六 堆排序
  10. ora-30926:无法在源表中获得一组稳定的行
  11. 接口自动化测试框架搭建(6、对接口进行mock的方法封装)--python+HTMLTestRunnerCN+request+unittest+mock+db
  12. Atiitt 使用java语言编写sql函数或存储过程
  13. matlab可以算二重积分么,matlab 二重积分函数
  14. DVR NVR CVR有什么区别
  15. 过去式-ed的发音规则
  16. dataset.padded_batch 用法案例
  17. 【CSS】CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框
  18. 扫雷游戏(模拟算法)
  19. 对于计算机发展史的一些启示
  20. 当我尝试写一个自动写小说的AI,长路漫漫的踩坑之路 ToT

热门文章

  1. ACL 2018最佳论文公布!计算语言学最前沿研究都在这里了
  2. python 易错总结
  3. 巨杉数据库通过“Mpp数据库基础能力认证”,权威技术认证金融级数据库
  4. SQL 左外连接,右外连接,全连接,内连接
  5. python爬虫入门教程--快速理解HTTP协议(一)
  6. php 记录用户行为路径,用户行为路径分析方法
  7. gptuefi优势_UEFI+GPT模式,对提升SSD性能非常明显 | 麦田一棵葱
  8. 目录忽略_宣传册设计中目录的构思方法和运用
  9. oracle有一百个人围一圈报数,案例:Oracle创建表时报session超过最大值 ORA-00018 证明递归ses...
  10. 教你C语言实现通讯录的详细代码