PHP mysqli打印数组问题
Posted
技术标签:
【中文标题】PHP mysqli打印数组问题【英文标题】:PHP mysqli printing array issue 【发布时间】:2015-03-10 14:23:36 【问题描述】:我对 php 和 mysqli 有疑问,因为我不太熟悉编码语言,所以我遇到了这个问题:当我尝试将数组从第 1 行填充到第 8 行时,我得到的唯一回报是print_r $items
结果是 8。不是 1 到 8。有人可以帮我吗?
代码
$gebruiker = $_SESSION['user'];
$query = "select `item_id` from inventory where `gebruiker_id` = ?";
$stmt = $db->prepare($query);
$stmt-> bind_param('i', $gebruiker->id);
$stmt->execute();
$stmt->bind_result($item_id);
$items = array();
while ($stmt->fetch())
$items['item_id'] = $item_id;
库存表
gebruiker_id | item_id
__________________________
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
1 | 6
1 | 7
1 | 8
【问题讨论】:
【参考方案1】:您每次都在覆盖数组中的相同元素...尝试:
$items[] = array('item_id' => $item_id);
【讨论】:
仍然只返回 8。 感谢您的帮助!虽然 gebruiker_id 是一个用户,所以它必须获取当前登录用户的值,并且每个用户的值不同,这个用户有 8 个项目,另一个用户有 6 个项目,所以 BETWEEN 将不起作用。当我尝试在 PHPmyAdmin 中运行查询时,它返回 8 行。 是的,我刚刚注意到这一点,并删除了误导性的 SQL ...我将通过在您的 while 循环中添加一个“count”变量并确保循环循环 8 次来进行调试。您的 $stmt->fetch() 可能没有返回预期的行数 我按照你说的调试了,结果返回 8,所以循环工作正常。 好吧,为了调试,试着把它添加到你的循环内部: $items_debug[] = $++count;循环运行后 $items_debug 的值是多少?【参考方案2】:你一直在循环中覆盖$item['item_id']
的值。您可能正在寻找的是:
$items[] = $item_id;
这将捕获数组中的所有项目 ID。
【讨论】:
根本不给我一个回报...编辑:它做了但它仍然只返回 8 我想知道 OP 是否启动了会话,以及它是否与问题有关。 @Fred-ii- 因为他们确实得到了一行,所以我假设他们的查询运行成功 @JohnConde 没错,当我通过 PHPmyAdmin 运行查询时,它返回 8 行的正确值。 那么一定是 fetch 方法。以上是关于PHP mysqli打印数组问题的主要内容,如果未能解决你的问题,请参考以下文章