为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决 mysqli_fetch_assoc 错误?

如何解决 mysqli_fetch_assoc 错误?

PHP
摇曳的蔷薇 2021-10-15 16:05:08
我正在为我的网站制作朋友列表,用户可以在其中关注、阻止、取消关注和取消阻止其他用户。我的朋友表有 3 列。一列用于较低的用户 ID,一列用于其他用户,以及一个状态列,将展示他们的关系。user1 | user2 | status----------------------1       2       11       3       22       3       3我创建了一个测试页面来显示登录用户的关系,并根据他们的状态将他们分成几组。以下代码应该显示所有被选中且状态 = 1 的用户。if (isset($_SESSION['userID'])) {                $userID = $_SESSION['userID'];                $friendsql = "SELECT * FROM friends WHERE user1 = ? OR user2 = ?";                $friendstmt = mysqli_stmt_init($conn);                if (!mysqli_stmt_prepare($friendstmt, $friendsql)) {                    echo "error";                }                else {                    mysqli_stmt_bind_param($friendstmt, "ii", $userID, $userID);                    mysqli_stmt_execute($friendstmt);                    $friendresult = mysqli_stmt_get_result($friendstmt);                    echo "<div class='friendStatus1'>";                        echo "Following";                        while (($friendrow = mysqli_fetch_assoc($friendresult)) && ($friendrow['status'] == 1)) {                            if ($userID == $friendrow['user1']) {                                $otheruserID = $friendrow['user2'];                            }                            else {                                $otheruserID = $friendrow['user1'];                            }                            $otheruserNamesql = "SELECT userName FROM users WHERE userid = ?";                            $otheruserNamestmt = mysqli_stmt_init($conn);                            if (!mysqli_stmt_prepare($otheruserNamestmt, $otheruserNamesql)) {                                echo "error";                            }目前,我的朋友表中有两个与登录用户的状态 = 1 的关系,但我的代码只会显示第一个关系。我的 while 循环有一个错误,它只让第一个关系吐出来。有人可以帮我解决我的错误吗?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你的外部 while 循环是

while (($friendrow = mysqli_fetch_assoc($friendresult)) && ($friendrow['status'] == 1)) {

所以如果它遇到一行 where $friendrow['status'] == 0,它将停止循环并忽略其余的行(因为它们没有排序)。

作为 SQL 中条件的一部分会更好 - 如果您只想将这些行添加到您的 SQL...

SELECT * FROM friends WHERE (user1 = ? OR user2 = ?) and status = 1

(注意括号以确保运算符的正确分组)。


查看完整回答
反对 回复 2021-10-15
  • 1 回答
  • 0 关注
  • 320 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号