如何修复PHP的“尝试获取非对象的属性”?

时间:2019-01-15 05:00:20

标签: 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抛出false,好像无法找到该表。

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>");
                    }

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

1 个答案:

答案 0 :(得分:0)

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

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

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

也可以将$row["'$selectstatement''"];替换为$row[$selectstatement];

确保获取记录的行中存在'slot_1_quantity'等,否则每次的项目数量将保持为0。