2011-05-25 148 views
0

另一個頁面是索引頁面,顯示了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

您將需要使用循環,但不需要爲每次迭代運行查詢。您可以使用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 .= ')'; 

而且你可以運行查詢。

我會建議您使用準備好的語句,雖然我不知道如何在聲明中使用它們。

+0

看起來很有趣。從來沒有想過你可以用這種方式使用循環。它不會打印查詢的結果,但可能與需要進一步調整的語句(如您提到的那樣) – Immers 2011-05-25 13:30:38

+0

爲了完成:'$ query = substr($ query,0,-2); '訣竅,因爲我們最後需要跳過括號。 – Immers 2011-05-27 08:40:22

+0

其實這是我忘記使用它們的空間。我會更新我的代碼。 – Belinda 2011-05-27 09:04:20

相關問題