变量被添加到从另一个页面传递的会话数组
详情页面
<?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)
所以我知道数组正确地获取值(Bar 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
从数组中过滤null值的最佳做法是什么?例如。数组没有传递空值,(当他们点击篮子按钮时发生)。
有人可以解释为什么while循环无法获得结果,我认为它是因为mysql查询没有将结果返回给结果变量?如果是这样,应使用什么语法将$ _SESSION传递给查询以获取多个结果?
很抱歉这么多问题。
答案 0 :(得分:1)
您无法运行如下查询:
SELECT * FROM `wheels` WHERE `recid` LIKE (3911, 5005, , 3393, 185)
你应该删除空节点并使用IN而不是像:
SELECT * FROM `wheels` WHERE `recid` IN(3911, 5005, 3393, 185)
删除null元素:
$newArray =array();
foreach($array as $key => $value)
{
if($value != null)
$newArray[] = $value;
}
print_r($newArray);
答案 1 :(得分:1)
在您的SQL查询"SELECT * FROM wheels WHERE recid = ($whereIn)"
中,您使用了=
而不是LIKE
。请检查一下。还要检查一下您回复的$cartQuery
。