PHP mysqli打印数组问题

Posted

技术标签:

【中文标题】PHP mysqli打印数组问题【英文标题】:PHP mysqli printing array issue 【发布时间】:2015-03-10 14:23:36 【问题描述】:

我对 phpmysqli 有疑问,因为我不太熟悉编码语言,所以我遇到了这个问题:当我尝试将数组从第 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打印数组问题的主要内容,如果未能解决你的问题,请参考以下文章

PHP不将数据库打印为表

打印数据库的所有字段

PHP 循环打印数组

尝试从数据库打印结果时出现未定义的错误

打印嵌套数组关联数组php

PHP MySQLi While 循环