将PHP foreach循环与SQL foreach循环结合使用
正向:
我已经检查了Stack Overflow上类似的措辞问题,但没有具体说明我正在尝试的内容。将PHP foreach循环与SQL foreach循环结合使用
我有:
我有会话数据,两个循环和一个SQL表。
- 特定现有会话数据的第一循环检查,并使用该数据的 键(而不是值),以确定哪些IDS 应该从表中选择(SQL)。
- 第二个循环逐行输出SQL结果。
- 第一循环查找当前添加到购物车 (键=产品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 [ '后'] [$ yourorder-> ID]给你量,因为密钥是产品ID :)
以及..如果你能绝对确保您的购物车钥匙不需要进行转义,你可以这样写:
$id_from_session = "WHERE id IN ('" . implode("', '", array_keys($_SESSION['post'])) . "')";
感谢您的回答。变形者大约在10分钟前回答。老实说不知道这个ID是否应该逃脱。它起源于文本框的名称而不是文本框的值。文本框的值代表数量。为了安全起见,最好逃脱吗? – 2013-05-02 05:52:29
来自浏览器的任何数据(用户可以更改它)应该被转义或者必须被转义 – indriq 2013-05-02 12:06:54
了解,谢谢。 – 2013-05-02 12:13:24
您的解决方案获得的数量和工作容易让我计算分类汇总(VALUE *数量)。我目前正在检查你对WHERE字符串的建议,并试图找出如何实现总体。 – 2013-05-02 05:16:42
您可以在foreach循环中保持运行总数。 – shapeshifter 2013-05-02 05:31:41
你的WHERE字符串解决方案的工作原理是,它更好,谢谢。 – 2013-05-02 05:31:46