从多个表中提取时 PHP while 循环和 if 语句问题
Posted
技术标签:
【中文标题】从多个表中提取时 PHP while 循环和 if 语句问题【英文标题】:PHP while loops and if statement issues when pulling from multiple tables 【发布时间】:2014-02-20 01:28:07 【问题描述】:我有 2 个具有唯一 ID 的表。我有一个表格,其中一列是日期字段。我正在尝试从具有“今天”日期的所有行中按今天的日期(它有效)过滤该字段,我想获取#key的单元格信息。获得该 ID 后,我想将其与#headkey 匹配。所以 $headkey == $key。过滤后,我想查看是否有任何字段匹配 = ItemID 列的交付。出于某种原因,我有一个无限循环。我玩弄了这个逻辑,但似乎无法让它发挥作用。有什么想法吗?
$TransactionSql = "SELECT * FROM apcshead WHERE DateInvoiced > 0 ORDER BY DateInvoiced DESC";
$ItemsSql = "SELECT * FROM apcsitem";
$rs=odbc_exec($conn,$TransactionSql);
while($row = odbc_fetch_array($rs))
//Grabbing Transaction info
$DateInvoiced = odbc_result($rs,"DateInvoiced");
$ApcsheadKey = odbc_result($rs,"Key");
$DateInvoiced = new DateTime($DateInvoiced);
$DateInvoiced_date = $DateInvoiced->format('m-d-Y');
//$TimeStamp_time = $TimeStamp->format('h:i:s');
if ($DateInvoiced_date == $today)
$ItemsRs=odbc_exec($conn,$ItemsSql);
while($row = odbc_fetch_array($ItemsRs))
$HeadKey = odbc_result($ItemsRs,"HeadKey");
$ItemID = odbc_result($ItemsRs,"ItemID");
if ($ItemID == 'Delivery')
echo 'Delivery';
echo '<br />';
*更新:*我再次修改了代码。现在如果它用日期吐出 1 行然后像 100 echo Delivery 然后返回并吐出另一个日期和相同的东西怎么办。仍然不确定发生了什么。
$TransactionSql = "SELECT * FROM apcshead WHERE DateInvoiced > 0 ORDER BY DateInvoiced DESC";
$ItemsSql = "SELECT * FROM apcsitem";
$rs=odbc_exec($conn,$TransactionSql);
while($row = odbc_fetch_array($rs))
$DateInvoiced = odbc_result($rs,"DateInvoiced");
$DateInvoiced = new DateTime($DateInvoiced);
$DateInvoiced_date = $DateInvoiced->format('m-d-Y');
echo $DateInvoiced_date;
echo '<br />';
if ($DateInvoiced_date == $Today)
echo $DateInvoiced_date;
echo '<br />';
$ItemsRs=odbc_exec($conn,$ItemsSql);
while($row = odbc_fetch_array($ItemsRs))
$ItemID = odbc_result($ItemsRs,"ItemID");
if ($ItemID == 'Delivery')
echo 'Delivery';
【问题讨论】:
肯定这是一个无限循环,而不仅仅是一个长时间运行的任务? @Zarathuztra - 是的。如果我删除当前在 $DateInvoiced_date == $today 的 IF 语句中的任何内容,并且只是回显 $DateInvoiced_date,我得到的行数不会超过 20 行。所以从技术上讲,我应该只得到 20 个“交付”的回声 酷,感谢您的信息。调查 @Zarathuztra - 谢谢。我所能确定的是,我搞砸了那个循环中的某些东西,但似乎不知道它是什么 我注意到您正在创建行但没有使用它们。你试过吗?怀疑它会导致你的循环,只是有点大扫除。 【参考方案1】:我使用 INNER JOIN 命令解决了这个问题。这很棒,因为我不必做嵌套循环:) 从 W3Schools 学习了如何做到这一点。 http://www.w3schools.com/sql/sql_join_inner.asp
这是我当前的 SQL 语句:
$TransactionSql = "SELECT apcshead.Key, apcshead.DateInvoiced, apcshead.InvNum, apcsitem.Headkey, apcsitem.ItemID FROM apcshead INNER JOIN apcsitem ON apcshead.Key=apcsitem.Headkey";
【讨论】:
以上是关于从多个表中提取时 PHP while 循环和 if 语句问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在单页中使用 php 从 while 循环中生成多个读取更多按钮?
如何使用php中的while循环显示从数据库中获取的多个图像中的特定点击图像,以及用于显示的javascript?