Php SQL试图在$query和$connect工作时获取非对象的属性


Php SQL Trying to get property of non-object while $query and $connect is working

您好。我的第一个大项目有个小问题。我在代码中使用了很多SQL语句,所有这些语句都能很好地工作,直到现在,我收到了一个错误"试图获取非对象的属性"。Xammp告诉我,错误在第80行。

function btngrp(){
global $connect;
global $listedForums;
global $disableUp;
global $disableDown;
$query = 'SELECT * FROM `categories` ORDER BY `categoryRank` ASC';
$results = $connect -> query($query);
if ($results -> num_rows > 0) {
    while ($row = $results -> fetch_assoc()) {

        echo '<tr class="headlineCat">
            <td colspan="2">' . utf8_encode($row['categoryName']) . '</td>
            <td class="text-right" width="10px">
            <ul class="posBtn">
            <li><button name="categoryOben" class="posUp btnWhite" value="' . $row['categoryID'] . '"><i class="fa fa-caret-up iconPosUp" aria-hidden="true"></i></button></li>
            <li><button name="categoryUnten" class="posDown btnWhite" value="' . $row['categoryID'] . '"><i class="fa fa-caret-down iconPosDown" aria-hidden="true"></i></button></li>
            </ul>
            </td>
            </tr>' . listItemByCategoryID($row['categoryID']) . $listedForums;
                    }
} else {
    echo '<tr><td>Keine Foren gefunden</td></tr>';
}}

我真的不知道我目前的错误在哪里。我已经检查了我的SQL语句是否正确。我已经在控制面板中执行了它,并且它成功了,因此,SQL语法必须是正确的。由于我已经使用了很多sql语句,所以我的$connection也必须正常工作。

由于某种原因,这个函数以前是可行的。但就在我完成控制与这些按钮链接的内容的其他功能时(定位和它们的等级(优先级)),错误出现在

经过一些"bug修复尝试"后,我注意到$results为空,无法从查询中获得任何内容

这只是代码的一小部分,"表单"标签和其他重要标签就在这部分下面:)

所以我想语法实际上是正确的,但sql中是否存在语句限制?我已经使用了大约25个SQL语句,或者其他我不知道的东西?

我怀疑这是你的问题。由于SQL错误导致$results为null或false,您将得到关于非对象的错误。

可能是上一个查询(在函数之前)有一个打开的游标。您需要让前一个调用者调用$connect->store_result()或将所有调用修改为query以指定MYSQLI_STORE_RESULT

请参阅store_result或查询文档。