【问题标题】:PHP mysqli printing array issuePHP mysqli打印数组问题
【发布时间】: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

【问题讨论】:

    标签: php arrays mysqli


    【解决方案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 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2013-09-25
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多