繁体   English   中英

PHP Sessions购物车

[英]PHP Sessions Shopping Cart

变量被添加到另一个页面传递的会话数组中

详情页面在这里

<?php
session_start();

require_once 'core/init.php';
include 'includes/header.php';
include 'includes/navigation.php';

// cart code


if(empty($_SESSION['cart'])) {
    $_SESSION['cart'] = array();
}

array_push($_SESSION['cart'], $_GET['id']);

购物车页面在这里

这是一些示例产品的输出

array(5) { [0]=> string(4) "3911" [1]=> string(4) "5005" [2]=> NULL [3]=> string(4) "3393" [4]=> string(3) "185" } 

和当前的SQL查询

SELECT * FROM `wheels` WHERE `recid` LIKE (3911, 5005, , 3393, 185)

所以我知道数组正在正确获取值(排除null)

session_start();

require_once 'core/init.php';
include 'includes/header.php';


var_dump($_SESSION['cart']);

$whereIn = implode(', ', $_SESSION['cart']);

// fetching products for cart
$cartQuery = "SELECT * FROM `wheels` WHERE `recid` = ($whereIn)";
$cartResult = mysqli_query($db, $cartQuery);


echo $cartQuery;

尝试使用时调用Sql结果

 <?php while($product = mysqli_fetch_assoc($cartResult)) : ?>

我得到一个错误

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in (blah blah directory) on line 121

什么是从数组中过滤空值的最佳实践? 例如,数组未传递空值(在单击篮子按钮时发生)。

有人可以解释为什么while循环无法获得结果,我正在猜测这是因为mysql查询没有将结果返回给result变量吗? 如果是这样,应该使用哪种语法将$ _SESSION传递到查询中以获得多重结果?

很抱歉有这么多问题。

您不能运行这样的查询:

SELECT * FROM `wheels` WHERE `recid` LIKE (3911, 5005, , 3393, 185)

您应该删除空节点并使用IN代替:

SELECT * FROM `wheels` WHERE `recid` IN(3911, 5005, 3393, 185)

删除空元素:

$newArray =array();
foreach($array as $key => $value)
{
    if($value != null)
        $newArray[] = $value;
}
print_r($newArray);

在您的SQL查询"SELECT * FROM wheels WHERE recid = ($whereIn)" ,您已使用=代替LIKE 请检查一下。 还要检查一次您回显的$cartQuery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM