Heim >Backend-Entwicklung >PHP-Tutorial > 有人遇到mysqli的fetch_assoc()方法出错吗?解决方案

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

WBOY
WBOYOriginal
2016-06-13 13:38:371223Durchsuche

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

在用mysqli类的fetch_assoc()时,Apache好像歇菜了。见如下代码:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->while($row =$rs->fetch_assoc())
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['HomeTown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}

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

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

<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->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();
?>
<br><font color="#e78608">------解决方案--------------------</font><br>没有错误信息吗?<br>看样子是没有打开错误显示功能
<br><font color="#e78608">------解决方案--------------------</font><br>
那只能是你的关联字段没有和数据库中的对应上。<br>实在没办法,用预编译处理吧:<br>
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;
        } <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn