将PHP foreach循环与SQL foreach循环结合起来


Combine PHP foreach loop with a SQL foreach loop

转发:

我已经查看了Stack Overflow上措辞相似的问题,但没有一个是我所尝试的。

我所拥有的:

我有会话数据、两个循环和一个SQL表。

  1. 第一个循环检查特定的现有会话数据,并使用该数据的键(而不是值(来确定哪些id应该从表中选择(SQL(
  2. 第二个循环逐行输出SQL结果

。。。这也可以用一种不那么抽象、更友好的方式来描述:

  1. 第一个循环查找当前添加到购物车中的商品(键=产品id,值=数量(以确定哪些产品应在"您的订单"页面上列出
  2. 第二个循环列出了与每个产品id相关联的数据行如标题、说明和单位成本

我需要什么:

由于我的会话数据由产品ID(键(和相应的数量(值(组成,我需要将数量显示为每个输出行的一部分。

id                | title         | description   | unit cost     | amount             | subtotal
session data key  | from database | from database | from database | session data value | basic PHP math
(also in database)                                                                       (unit cost * amount)

我的代码:

使用会话数据密钥查询所需产品的第一个循环:

$id_from_session = "WHERE id = '9999999999'"; //fix due to not being sure how to simuataneously incorporate "WHERE" and "OR" into query loop (only looping the "OR" condition).
foreach($_SESSION['post'] as $key=>$value)
    {       
        $id_from_session .= "OR id ='".$key."'";
    } 

第二个循环输出查询的结果行:

foreach ( $yourorders as $yourorder ) 
    {
    ?>
        <?php echo $yourorder->title; ?></br>
        <?php echo $yourorder->description; ?></br>
        <?php echo $yourorder->value; ?></br>
        <?php /* I NEED THE QUANTITY HERE */ ?></br>
        <?php /* VALUE * QUANTITY HERE */ ?></br>
    <?php
    }
<?php /* OVERALL TOTAL OUTSIDE OF LOOP */ ?></br>

我的问题:

如何将会话数据循环中的数量(以及数量*单位值(合并到SQL结果循环中?

$_SESSION['post'][$yourorder->id] 

应该把数量给你吗?所以,

<?php echo $_SESSION['post'][$yourorder->id]; ?>

或者是否允许短标签

<?= $_SESSION['post'][$yourorder->id]; ?> 

还有一种构建WHERE字符串的更好方法。

$where = array();
foreach($_SESSION['post'] as $key=>$value)
{       
    $where[] = "id ='".$key."'";
} 
$id_from_session = "WHERE " . implode(' OR ', $where);

$_SESSION['post'][$yourorder->id]会给你数量,因为密钥是产品id:(

嗯。。如果你能绝对确定你的购物车钥匙不需要逃跑,你可以写下:

$id_from_session = "WHERE id IN ('" . implode( "', '", array_keys($_SESSION['post']) ) . "')";