php if foreach个数记录,php foreach循环只返回数组中第一次迭代的值
我似乎无法确定为什么我的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循环只返回数组中第一次迭代的值相关推荐
- 实现输入10个数,输出这10个数的和,平均值;输出该组数中数与数的最大差值;再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标
实现输入10个数,输出这10个数的和,平均值:输出该组数中数与数的最大差值:再输入一个数,然后确定它在这个数组中第一次出现的位置,如果没有该数则输出-1,否则输出其下标 int main() //程序 ...
- 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) 我有阵列,可能有无限量的元素. 我试图 ...
- 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点
利用for循环把遍历数组中的元素依次获取出来 数组索引号从0开始 所以i必须从0开始 i<6 <script>var arr = ['blue', 2, true, 4, 5, 6 ...
- Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字
7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值.编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字 题目 题目描述与运行示例 破题 代码 21.11.11 ...
- 有15个数按从小到大的顺序存放在一个数组中。(折半查找)
有15个数按从小到大的顺序存放在一个数组中.输入一个数,要求用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,输出"不在表中". 折半查找法的原理是:对于一个升序数组 ...
- 找出数组中不重复的值php_PHP查找数值数组中不重复最大和最小的10个数的方法...
搜索热词 本文实例讲述了PHP查找数值数组中不重复最大和最小的10个数的方法.分享给大家供大家参考.具体如下: 1. PHP代码如下: PHP;"> //随机生成1万个元素的数组 fo ...
- 511遇见易语言循环遍历删除数组中重复成员方法
方法3采用两次计次循环进行遍历和如果真进行判断,是最难理解的一种方法,本人感觉没有方法2好用,这里作为一种思考讲解学习参考. 511遇见易语言教程 视频教程源码 .版本 2 .支持库 spec.子程序 ...
- Vue如何循环提取对象数组中的值
数据如下,提取name和callcount 第一种: getQueryCallStatistics("sesp1", this.provinceId).then((res) =&g ...
- vue 取数组第一个值_Vue如何循环提取对象数组中的值
1.数据如下,提取name和callcount 2代码. getQueryCallStatistics("sesp1", this.provinceId).then((res) = ...
最新文章
- 阿里云峰会 | 统一召回引擎在搜索场景的应用实践
- 《风暴英雄》里那些超棒的游戏设计
- MAC 安装jenkins
- ***不是已知元素 原因可能是网站中存在编译错误
- linux服务器上装R语言,R语言 在linux上的安装
- couchdb java 连接_CouchDB客户端开发—Java版
- twitter中处理网页被iframe方式
- Python批量整理文件名小案例(附公众号第一批赠书活动中奖名单)
- (转载)排序六 堆排序
- ora-30926:无法在源表中获得一组稳定的行
- 接口自动化测试框架搭建(6、对接口进行mock的方法封装)--python+HTMLTestRunnerCN+request+unittest+mock+db
- Atiitt 使用java语言编写sql函数或存储过程
- matlab可以算二重积分么,matlab 二重积分函数
- DVR NVR CVR有什么区别
- 过去式-ed的发音规则
- dataset.padded_batch 用法案例
- 【CSS】CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框
- 扫雷游戏(模拟算法)
- 对于计算机发展史的一些启示
- 当我尝试写一个自动写小说的AI,长路漫漫的踩坑之路 ToT
热门文章
- ACL 2018最佳论文公布!计算语言学最前沿研究都在这里了
- python 易错总结
- 巨杉数据库通过“Mpp数据库基础能力认证”,权威技术认证金融级数据库
- SQL 左外连接,右外连接,全连接,内连接
- python爬虫入门教程--快速理解HTTP协议(一)
- php 记录用户行为路径,用户行为路径分析方法
- gptuefi优势_UEFI+GPT模式,对提升SSD性能非常明显 | 麦田一棵葱
- 目录忽略_宣传册设计中目录的构思方法和运用
- oracle有一百个人围一圈报数,案例:Oracle创建表时报session超过最大值 ORA-00018 证明递归ses...
- 教你C语言实现通讯录的详细代码