【发布时间】:2016-07-22 20:58:27
【问题描述】:
我正在尝试将多个项目存储到一个会话中。我正在从这样的表格中发布项目:
<?php
$product_id = $_GET['product_id'];
$sql = "SELECT * FROM Products WHERE product_id = $product_id";
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()){
echo '<img src=' . $row['product_img'] . ' />';
echo '<div class="title">'. $row['product_name'] .'</div>';
echo '<div class="title">'. $row['product_price'] .'</div>';
echo '<div class="title">'. $row['product_sku'] .'</div>';
echo '<div class="title">'. $row['product_description'] .'</div>';
echo '<form action="addToCart.php" method="post">
<input type="hidden" name="product_img" value="' . $row['product_img'] . '" />
<input type="hidden" name="product_id" value="' . $row['product_id'] . '" />
<input type="hidden" name="product_name" value="' . $row['product_name'] . '" />
<input type="hidden" name="product_price" value="' . $row['product_price'] . '" />
<input type="hidden" name="product_sku" value="' . $row['product_sku'] . '" />
<input type="hidden" name="product_description" value="' . $row['product_description'] . '" />
<input type="submit" name="Submit">
</form>';
}
} else{
echo "0 Results";
}
?>
addToCart.php 看起来像这样:
<?php
if (isset($_POST['Submit'])) {
$_SESSION['product_img'] = $_POST['product_img'];
$_SESSION['product_id'] = $_POST['product_id'];
$_SESSION['product_name'] = $_POST['product_name'];
$_SESSION['product_price'] = $_POST['product_price'];
$_SESSION['product_sku'] = $_POST['product_sku'];
$_SESSION['product_description'] = $_POST['product_description'];
}
?>
所以上面现在将项目设置到会话中(所以我相信)。然后我从篮子.php 中存储的数据中输出项目
<?php echo '<img src=' . $_SESSION['product_img'] . ' />'; ?>
<?php echo $_SESSION['product_id'];?>
<?php echo $_SESSION['product_name'];?>
<?php echo $_SESSION['product_price'] ?>
<?php echo $_SESSION['product_sku']; ?>
<?php echo $_SESSION['product_description']; ?>
我遇到的问题是每当我添加另一个项目时它会覆盖前一个项目?我知道我需要使用数组来存储多个项目,但我尝试了一些不同的方法,但我很难理解。
【问题讨论】:
-
您可以在数组中嵌入数组。
$_SESSION['foo'][1] = 'someval', $_SESSION['foo'][2] = 'otherval';请注意,您很容易受到sql injection attacks -
@MarcB 感谢您的评论,您能否为我解释一下,因为我正在努力理解(对不起,我对此很陌生)
-
使用您的产品 ID 作为顶级数组键:
$_SESS['cart'][$prodID]['name'] => 'foo'