2

向前:

我已经检查了 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 结果循环中?

4

2 回答 2

2
$_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);
于 2013-05-02T05:06:28.780 回答
0

$_SESSION['post'][$yourorder->id] 为您提供数量,因为键是产品 ID :)

好吧..如果您可以绝对确定您的购物车密钥不需要转义,您可以这样写:

$id_from_session = "WHERE id IN ('" . implode( "', '", array_keys($_SESSION['post']) ) . "')";
于 2013-05-02T05:13:37.440 回答