PHP中的MySQLi数组有时会变空

时间:2015-06-29 16:09:46

标签: php arrays mysqli

好的,所以我几乎在试图在这里发现问题,因为有时这段代码完美无缺,有时候没有,所以这就是:

$allItems = array();
$allItemsQuery = mysqli_query($conn,"SELECT * FROM cart_items WHERE crt_id='".$row['crt_id']."' AND quantity>0");
while($itemsArray = mysqli_fetch_assoc($allItemsQuery)){
    array_push($allItems,$itemsArray['item_id']);
}
$allItemsNames = array();
foreach($allItems as $key => $value){
    $itemNames = mysqli_fetch_assoc(mysqli_query($conn,"SELECT * FROM items WHERE id='$value'"));
    array_push($allItemsNames, $itemNames['item_name']);
}
$allItemsFinal = array_combine($allItems,$allItemsNames);
$itemsList = 'Items:<br>';
foreach($allItemsFinal as $key => $value){
    $itemsList .='<a href="http://www.exampleurl.org/product.php?ID='.$key.'">'.$value.'</a><br><br>';
}

我们的想法是,它应该从数据库中获取用户在购物车中拥有的所有商品ID,并将其放入我已建立的阵列中,抓住所有项目名称根据其ID,并将其放入一个数组,然后将两个数组合并为一个键和值。然后我将数组中的数据输出到字符串中。

此代码有时会完美运行,然后突然没有。有人可以给我任何想法吗?我永远感激不尽。

1 个答案:

答案 0 :(得分:0)

我认为你应该抛弃这些代码并使用类似的东西:

$items = array();
$itemsQuery = "SELECT i.item_name, i.item_id 
    FROM items i WHERE i.item_id 
    IN (SELECT ci.item_id 
        FROM cart_items 
        WHERE crt_id='".$row['crt_id']."' 
        AND quantity>0
    )");

$allItemsQuery = mysqli_query($conn, $itemsQuery);
while ($row = mysqli_fetch_assoc($allItemsQuery))
    $items[$row['item_id']] = $items[$row['item_name']];