当前位置:Gxlcms > PHP教程 > 有人遇到mysqli的fetch_assoc()方法出错吗?解决方案

有人遇到mysqli的fetch_assoc()方法出错吗?解决方案

时间:2021-07-01 10:21:17 帮助过:5人阅读

有人遇到mysqli的fetch_assoc()方法出错吗?
配置是phpnow5.1.6 :windowsXP + php5.2.14 + apache2.2.6 + MySQL5.1.50

在用mysqli类的fetch_assoc()时,Apache好像歇菜了。见如下代码:
PHP code
while($row =$rs->fetch_assoc())
{
echo "";
echo "" . $row['FirstName'] . "";
echo "" . $row['LastName'] . "";
echo "" . $row['Age'] . "";
echo "" . $row['HomeTown'] . "";
echo "" . $row['Job'] . "";
echo "";
}

IE提示无法显示页面,FF提示载入页面时到服务器的连接被重置。
如果把上面的代码去掉则恢复正常。
如果把fetch_assoc关联数组代换为fetch_row()的索引数组也没事,对应把$row['FirstName']换成$row[0]就可以。
但有时这样代码会变得不清晰,所以上来救助大家有无解决方法?!
我在网上google了很久,发现很少人遇到这样的问题,即使有,也只是书写错误什么的,不适合解决我这个问题。

------解决方案--------------------
使用 $rs->fetch_array 方法吧
------解决方案--------------------
用fetch_array()加上参数就好了:MYSQLI_ASSOC[关联], MYSQLI_NUM[数字], MYSQLI_BOTH[全部]
PHP code

query($query);

/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

/* free result set */
$result->close();

/* close connection */
$mysqli->close();
?>

------解决方案--------------------
没有错误信息吗?
看样子是没有打开错误显示功能
------解决方案--------------------
那只能是你的关联字段没有和数据库中的对应上。
实在没办法,用预编译处理吧:
PHP code

$sql = "SELECT mid,movName,movType,movStar,movImg,movPlay,director,producter FROM mov_film";
        $stmt = $this->mysqli->prepare($sql);
        $stmt->execute();
        $stmt->store_result();
         $stmt->bind_result($mid,$movName,$movType,$movStar,$movImg,$movPlay,$director,$producter);
        $rows = $stmt->affected_rows;
        if ($rows > 0){
            $arrMovie = array();
            while($stmt->fetch()){
                //将文件名从路径中取出并转换为相对路径
                $movImg = "../../images/".basename($movImg);
                //截取文件名
                $arrStr = explode(".",basename($movPlay));
                $movPlay = "../../videos/".$arrStr[0];

                $arr = array(
                    "mid" => $mid,
                    "movName" => $movName,
                    "movType" => $movType,
                    "movStar" => $movStar,
                    "movImg" => $movImg,
                    "movPlay" => $movPlay,
                    "director" => $director,
                    "producter" => $producter
                );
                array_push($arrMovie,$arr);
            }
            return $arrMovie;
        }                     

人气教程排行