为什么此get函数会出现致命错误?

我试图根据3个要求选择我的帖子表中的所有行。

  1. 来自帖子表的用户标识=来自用户表的用户标识

  2. 来自帖子表的主机ID =来自用户表的用户ID

  3. 帖子表中的commentid =零

我想选择满足这些要求的所有行。这是错误...

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in C:\xampp\htdocs\loginsystem\includes\posts.inc.php:108 Stack trace: #0 C:\xampp\htdocs\loginsystem\home.php(38): getUploads(Object(mysqli)) #1 {main} thrown in C:\xampp\htdocs\loginsystem\includes\posts.inc.php on line 108


这是我的代码...


function getUploads($conn) {


        $userName = $_GET["user"];

        $sqluserid = "SELECT userid FROM users WHERE userName = $userName";

        $userid = mysqli_query($conn, $sqluserid);

        $sqlusercontent = "SELECT * FROM posts WHERE hostid = $userid AND userid = $userid AND commentid = 0";

        $usercontent = mysqli_query($conn, $sqlusercontent);

        $postid = 1;


    // This is the actual upload content

        while ($row = $usercontent->fetch_assoc()) {

            echo "<div class='postbox'><p>";

            echo $row['title']."<br>";

            echo $row['date']."<br>";

            echo "<div><img src='posts/".$userid."/".$postid.".*></div>";

            echo $row['description']."<br>";

            echo "</p>";

            echo "</div>";

            $postid++;

        }    

    }


慕姐4208626
浏览 155回答 2
2回答

小唯快跑啊

您不是在调用$userid->fetch_assoc()获取第一个查询的结果。您需要执行此操作,然后使用$row['userid']来使用户ID脱离行。在第一个查询中,您还需要在用户名前后加上引号。最好使用预处理语句和$stmt->bind_param()来防止SQL注入。但是首先不需要两个查询,您可以连接两个表。SELECT p.*FROM posts AS pJOIN users AS u ON p.userid = u.userid AND p.hostid = u.useridWHERE u.username = '$userName' AND p.commentid = 0您应该检查查询的结果,然后将在第一个查询中收到有关语法错误的通知。$result = mysqli_query($conn, $sql) or die($conn->error);
打开App,查看更多内容
随时随地看视频慕课网APP