Mysqli fetch_assoc给出错误:期望参数mysqli_result,给出整数


Mysqli fetch_assoc gives error: expects parameter mysqli_result, integer given

我想知道这有什么问题。

首先,它显示了一个错误,例如mysqli_fetch_assoc() 期望参数 1 mysqli_result,给定整数

错误显示在第 while ($prof_info = mysqli_fetch_assoc($profRow)) {行中

下面的代码:

$profInfo = "SELECT * FROM register_user
                    WHERE emailAddress = '". $_SESSION['user_info']['firstName'] ."'";
    $profileInformation = mysqli_query($mysqli, $profInfo) or die(mysqli_error($mysqli));
    $profRow = mysqli_num_rows($profileInformation);
    while ($prof_info = mysqli_fetch_assoc($profRow)) {
        $profFirstName = htmlspecialchars($prof_info["firstName"]);
        $profLastName = htmlspecialchars($prof_info["lastName"]);
        $profMail = htmlspecialchars($prof_info["emailAddress"]);
        $profAdd = htmlspecialchars($prof_info["mainAddress"]);
        $profCountry = htmlspecialchars($allRow["registerCountry"]);
        $profCity = htmlspecialchars($allRow["registerCity"]);
        $profZip = htmlspecialchars($allRow["postalCode"]);
        $profPostalCode = mysqli_escape_string($profZip);
        echo "<li> Name : </li>";
        echo "<span class='"infoProfile'"> <p> $profFirstName $profLastName </p> </span>";
        echo "<li> Email : </li>";
        echo "<span class='"infoProfile'"> <p> $profMail </p> </span>";
        echo "<li> Main Address : </li>";
        echo "<span class='"infoProfile'"> <p> $profAdd </p> </span>";
        echo "<li> Country : </li>";
        echo "<span class='"infoProfile'"> <p> $profCountry </p> </span>";
        echo "<li> City : </li>";
        echo "<span class='"infoProfile'"> <p> $profCity </p> </span>";
        echo "<li> Postal Code : </li>";
        echo "<span class='"infoProfile'"> <p> $profPostalCode </p> </span>";
        echo "<p class='"profileLogout'"> <a href='"logout'"> LOGOUT </a> </p>";
    }
    mysqli_close($mysqli);

有什么想法吗?

你必须将$profileInformation传递到mysqli_fetch_assoc

while ($prof_info = mysqli_fetch_assoc($profileInformation)) {
    ...
}

mysqli_query($mysqli, $profInfo)返回对象mysql_result,whuch 将进一步传递到 mysqli_fetch_assoc 中。

相反,您正在尝试传递一个整数,该整数由 mysqli_num_rows 返回。

使用$profileInformation资源变量获取

    $profInfo = "SELECT * FROM register_user
                        WHERE emailAddress = '". $_SESSION['user_info']['firstName'] ."'";
        $profileInformation = mysqli_query($mysqli, $profInfo) or die(mysqli_error($mysqli)); // This is actual mysql result and which consist of resource Id
        $profRow = mysqli_num_rows($profileInformation);
        while ($prof_info = mysqli_fetch_assoc($profileInformation )) {
//We have to pass resource id to `mysqli_fetch` 
            $profFirstName = htmlspecialchars($prof_info["firstName"]);
            $profLastName = htmlspecialchars($prof_info["lastName"]);
            $profMail = htmlspecialchars($prof_info["emailAddress"]);
            $profAdd = htmlspecialchars($prof_info["mainAddress"]);
            $profCountry = htmlspecialchars($allRow["registerCountry"]);
            $profCity = htmlspecialchars($allRow["registerCity"]);
            $profZip = htmlspecialchars($allRow["postalCode"]);
            $profPostalCode = mysqli_escape_string($profZip);
            echo "<li> Name : </li>";
            echo "<span class='"infoProfile'"> <p> $profFirstName $profLastName </p> </span>";
            echo "<li> Email : </li>";
            echo "<span class='"infoProfile'"> <p> $profMail </p> </span>";
            echo "<li> Main Address : </li>";
            echo "<span class='"infoProfile'"> <p> $profAdd </p> </span>";
            echo "<li> Country : </li>";
            echo "<span class='"infoProfile'"> <p> $profCountry </p> </span>";
            echo "<li> City : </li>";
            echo "<span class='"infoProfile'"> <p> $profCity </p> </span>";
            echo "<li> Postal Code : </li>";
            echo "<span class='"infoProfile'"> <p> $profPostalCode </p> </span>";
            echo "<p class='"profileLogout'"> <a href='"logout'"> LOGOUT </a> </p>";
        }
        mysqli_close($mysqli);