【发布时间】:2025-12-16 10:25:01
【问题描述】:
好的,所以我几乎已经走到尽头了,试图在这里发现问题,因为有时这段代码可以完美运行,但有时却不行,所以这里是:
$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 获取所有项目名称,然后将其放入一个数组中,然后将两个数组组合为键和值。然后我将数组中的数据输出到一个字符串中。
这段代码有时可以完美运行,然后突然不行。有人可以告诉我为什么吗?我会永远负债累累。
【问题讨论】:
-
这会产生什么错误?知道错误是什么对解决问题大有帮助
-
这很奇怪——它似乎没有产生任何错误,它只是产生一个空字符串。然而,在它开始产生一个空字符串之前,它可以工作很长一段时间。
-
好吧,如果没有错误,则可能是数据问题,也许只是在某些情况下找不到任何东西,因此您的 $allItems 变量中没有任何内容。看看您是否可以追踪生成空字符串时使用的输入组合。如果您对该输入组合的查询为空,那么您就是原因。
-
使用
JOIN而不是多个查询。 -
那是可怕的代码。您只是假设查询永远不会失败,并且真的需要了解 JOIN...