php – 自动增加SESSION密钥ID
发布时间:2020-12-13 15:55:43 所属栏目:PHP教程 来源:网络整理
导读:我在做某事时遇到了问题. 我有这个代码片段来将产品添加到购物车: $product_id = isset($_GET['product_id']) ? $_GET['product_id'] : "";$product_name = isset($_GET['product_name']) ? $_GET['product_name'] : "";$sql = "SELECT * FROM products WHE
我在做某事时遇到了问题.
我有这个代码片段来将产品添加到购物车: $product_id = isset($_GET['product_id']) ? $_GET['product_id'] : ""; $product_name = isset($_GET['product_name']) ? $_GET['product_name'] : ""; $sql = "SELECT * FROM products WHERE product_id LIKE '{$product_id}' AND product_name LIKE '{$product_name}' LIMIT 1"; $stmt = $connection->prepare($sql); $stmt->execute(); $num = $stmt->rowCount(); if($num == 1) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { extract($row); if(!isset($_SESSION['cart'])) { $product_id_session = 1; } else { $count = count($_SESSION['cart']); $product_id_session = $count++; } $columns = array ( 'product_id_session' => $product_id_session,'product_id' => $product_id,'product_name' => $product_name,'product_price' => $product_price ); $_SESSION['cart'][$product_id_session] = $columns; redirect_to('products.php?&message=added&product_name='. $_SESSION['cart'][$product_id_session]['product_name']); } } 如您所见,如果创建了会话购物车,我将变量$product_id_session分配给SESSION数组的数量加1.否则,变量$product_id_session设置为1.在购物车页面中,我有一个删除所选产品的链接: foreach($_SESSION['cart'] as $product) { echo "<button onClick="location.href='remove.php?product_id_session={$product['product_id_session']}'"> Remove from cart </button>"; } 然后,在remove.php文件中,我有这个来处理查询字符串中的数据并从购物车中删除产品: $product_id_session = isset($_GET['product_id_session']) ? $_GET['product_id_session'] : ""; unset($_SESSION['cart'][$product_id_session]); 我面临的问题是:例如,我在购物车中添加了两个产品.然后我删除了第一个产品,并将另一个产品添加到购物车中.新产品,而不是添加,只会取代以前在购物车中添加的产品,$product_id_session将始终是相同的值.我做错了什么?如何为SESSION指定ID? 解决方法
您可以使用以下方法将新商品添加到购物车:
$_SESSION['cart'][] = $columns; 然后它将附加到数组的末尾. 并且,在从数组中删除项目后,您可以(但没有必要)重新索引它 $_SESSION['cart'] = array_values($_SESSION['cart']); 打印出购物车时,您只需更新foreach循环以将键值捕获到某个变量,即$index.不同之处在于$index => $product部分. foreach($_SESSION['cart'] as $index=>$product) { echo "<button onClick="location.href='remove.php?product_id_session={$index}'"> Remove from cart </button>"; } Remove.php基本保持不变,我刚刚更新它以获得更好的可读性: if (isset($_GET['product_id_session']) and $_GET['product_id_session']) { $product_id_session = $_GET['product_id_session']; unset($_SESSION['cart'][$product_id_session]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |