php - 如何为 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>");
}
我想在我的库存页面上看到“-”只有可堆叠的物品,但我似乎无法通过这个循环显示数量。
解决方案
使用此代码,它将仅返回设置的行值,如果尚未设置行,则转义
$row = $result->fetch_assoc();
$item_quantity = isset($row[$selectstatement]) ? $row[$selectstatement] : "0";
如果有任何其他显示项目名称和项目数量 0,它将显示您的项目名称和项目数量。
也替换$row["'$selectstatement''"];
为$row[$selectstatement];
确保“slot_1_quantity”等出现在您从中获取记录的行中,否则项目数量每次都将保持为 0。
推荐阅读
- angular - angular-cli 安装后显示'ng'不是内部或外部命令、可运行程序或批处理文件'
- sql - 选择 SQL 中的 TOP 2 最大值
- android - 无法从 Firebase 数据库 DataSnapshot 中获取价值
- ios - 不使用内置身份验证 UI 的 AWS Mobile Hub 登录/注册
- sql - 如何获得进出时间sql?
- java - spring data neo4j不更新RelationshipEntity中的节点
- vb.net - ClosedXML 导出到 xlsx 错误:'无法将单元格值设置为' + uniqueidentifier
- android - 如何从片段到片段获取回调
- c# - 使用 Ajax 发布到 ASP.Net 控制器 - 发布的数据不正确
- javascript - JavaScript 中的“读/写变量”是什么意思?