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

时间:2014-11-17 08:40:49

标签: php mysqli

我想知道这有什么不对。

首先,它显示了一个错误 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);

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您必须将$profileInformation传递给mysqli_fetch_assoc

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

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

而是尝试传递一个由mysqli_num_rows返回的整数。

答案 1 :(得分:0)

使用$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);