将PHP foreach循环与SQL foreach循环结合使用

将PHP foreach循环与SQL foreach循环结合使用

问题描述:

正向:

我已经检查了Stack Overflow上类似的措辞问题,但没有具体说明我正在尝试的内容。将PHP foreach循环与SQL foreach循环结合使用

我有:

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

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

    1. 第一循环查找当前添加到购物车 (键=产品ID,贵重物品:

    ......这也可以在一个不那么抽象和友好的方式进行=数量)来确定什么产品 应列在“您的订单”页面上。

  3. 第二个循环列表的数据行与每个产品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); 
+0

您的解决方案获得的数量和工作容易让我计算分类汇总(VALUE *数量)。我目前正在检查你对WHERE字符串的建议,并试图找出如何实现总体。 – 2013-05-02 05:16:42

+1

您可以在foreach循环中保持运行总数。 – shapeshifter 2013-05-02 05:31:41

+0

你的WHERE字符串解决方案的工作原理是,它更好,谢谢。 – 2013-05-02 05:31:46

$ _SESSION [ '后'] [$ yourorder-> ID]给你量,因为密钥是产品ID :)

以及..如果你能绝对确保您的购物车钥匙不需要进行转义,你可以这样写:

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

感谢您的回答。变形者大约在10分钟前回答。老实说不知道这个ID是否应该逃脱。它起源于文本框的名称而不是文本框的值。文本框的值代表数量。为了安全起见,最好逃脱吗? – 2013-05-02 05:52:29

+1

来自浏览器的任何数据(用户可以更改它)应该被转义或者必须被转义 – indriq 2013-05-02 12:06:54

+0

了解,谢谢。 – 2013-05-02 12:13:24