作为索引页面的另一页显示了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>
答案 0 :(得分:0)
您将需要使用循环,但不需要为每次迭代运行查询。您可以使用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, 0, -2); //Get rid of the trailing comma and space
$query .= ')';
您可以运行查询。
我建议您使用预准备语句,但我不确定如何将它们用于in语句。