首页 > 解决方案 > 如何为 PHP 修复“尝试获取非对象的属性”?

问题描述

我基本上想要做的是通过一个循环来查看玩家库存中的所有库存槽,并找出它们是什么项目 ID,并在玩家进入库存页面时回退项目名称,我有这个工作。

当我想包含数量并且我想一口气遍历数据库中的每个 slot_x_quantity 表时,问题就出现了,但是我不断收到类似的错误

未定义的索引:'slot_1_quantity''

我将 $selectstatement 放入查询中以查找数量,因为我希望能够在循环中通过 slot_x_quantity 1-9。

我什至尝试过不使用 $selectstatement 并执行$query = "SELECT slot_'$indexaddone'_quantity FROM inventory WHERE char_id='$char_id'"; 但随后 $result 抛出错误,就好像它无法找到表一样。

foreach($char_inv_slots as $key=>$value) {
                    if($value != 0) {
                        $item_id = $value;
                        $query = "SELECT item_name FROM items WHERE id='$item_id'";
                        $result = mysqli_query($db, $query);
                        $row = $result->fetch_assoc();
                        $item_name = $row['item_name'];

                        $indexaddone = (int)$key + 1;
                        $selectstatement = "slot_" . $indexaddone . "_quantity";

                        $query = "SELECT '$selectstatement' FROM inventory WHERE char_id='$char_id'";
                        $result = mysqli_query($db, $query) or die($query->error);
                        $row = $result->fetch_assoc();
                        $item_quantity = $row["'$selectstatement''"];

                        if($value == 8001) {
                            echo($item_name . " - " . $item_quantity);
                        } else {
                        echo($item_name . "<br>");
                    }

我想在我的库存页面上看到“-”只有可堆叠的物品,但我似乎无法通过这个循环显示数量。

标签: php

解决方案


使用此代码,它将仅返回设置的行值,如果尚未设置行,则转义

$row = $result->fetch_assoc();
$item_quantity = isset($row[$selectstatement]) ? $row[$selectstatement] : "0";

如果有任何其他显示项目名称和项目数量 0,它将显示您的项目名称和项目数量。

也替换$row["'$selectstatement''"];$row[$selectstatement];

确保“slot_1_quantity”等出现在您从中获取记录的行中,否则项目数量每次都将保持为 0。


推荐阅读