亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決 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 關注
  • 332 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號