如何解决购物车:需要输出订购商品
| 索引页面的另一页显示了Pizzashop的目录。每个披萨都是将ID传递到此页面的超链接。 我的问题的核心在于以foreach循环开头的代码。我只想根据手头的SELECT查询从数据库中读出。 我知道将查询放入循环很奇怪,但是目前这是我弄清楚如何循环遍历SESSION数组中所有id的唯一方法。 我尝试了很多事情来输出查询应该提供的返回值,我在弄乱mysqli_stmt的事情,这一切都给了我许多错误。<?php
session_start();
require \'pizza_sc_fns.php\';
require \'header.php\';
@$pizzaId = $_GET[\'pizza_id\'];
if (!isset($_SESSION[\'order\']))
{
$_SESSION[\'order\'] = array();
$_SESSION[\'items\'] = 0;
$_SESSION[\'totalprice\'] = 0.00;
}
if (isset ($_SESSION[\'order\'][$pizzaId]))
{
echo $_SESSION[\'order\'][$pizzaId]++;
echo \"\\$_SESSION[\'order\'][\\$pizzaId] is SET \\n\";
}
else
{
echo $_SESSION[\'order\'][$pizzaId] = 1;
}
$conn = connect2db();
foreach ($_SESSION[\'order\'] as $pizzaItem)
{
$query = \"SELECT pizza_name FROM pizzas WHERE pizza_id = $pizzaItem\";
$res = @$conn->query($query);
echo $res->fetch_assoc();
echo \"<hr />\";
//$query = mysqli_prepare($conn,\"SELECT * FROM pizzas WHERE pizza_id=$pizzaItem\");
//echo var_dump($query).\"<br />\";
//$stmt_exec = mysqli_stmt_fetch($query);
//print $pizzaItem.\"<br />\";
}
?>
<a href=\"logout.php\"> Destroy session >> </a>
解决方法
您将需要使用循环,但无需为每次迭代都运行查询。您可以使用in子句。
您的代码将类似于
$query = \'Select pizza_name from pizzas where id in (\';
foreach($_SESSION[\'order\'] as $pizza_id) {
$query.= mysql_real_escape_string($pizza_id).\',\';
}
$query= substr($query,-2); //Get rid of the trailing comma and space
$query .= \')\';
您可以运行查询。
我建议您使用准备好的语句,尽管我不确定如何将它们用于in语句。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。