配置是phpnow5.1.6 :windowsXP + php5.2.14 + apache2.2.6 + MySQL5.1.50在用mysqli类的fetch_assoc()时,Apache好像歇菜了。见如下代码:
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了很久,发现很少人遇到这样的问题,即使有,也只是书写错误什么的,不适合解决我这个问题。

解决方案 »

  1.   

    使用 $rs->fetch_array 方法吧
      

  2.   

    用fetch_array()加上参数就好了:MYSQLI_ASSOC[关联], MYSQLI_NUM[数字], MYSQLI_BOTH[全部]<?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();
    ?> 
      

  3.   

    早已试啦!fetch_array(MYSQLI_ASSOC)也不行,但用NUM可以,这个跟fetch_row是一样的,所以没必要转过来。总感觉mysqli的这个方法跟apache有时会冲突,不知是不是看版本。
      

  4.   

    一直在用fetch array,没出现过你所说的情况
      

  5.   

    那只能是你的关联字段没有和数据库中的对应上。
    实在没办法,用预编译处理吧:$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;
         }
      

  6.   

    对应上了。估计是php_mysqli.dll的问题。算了。不过你的方法也可行。多谢。
      

  7.   

    打开了错误,本身是默认的错误级别,没改过。
    apache也没报错,之前的错误还是[error] [client 127.0.0.1] File does not exist: ... ...
    所以说这个错误有点奇怪,应该是版本之前的冲突。反正懒得找了。
      

  8.   

    是的,以前用phpnow1.5.5也没有错误。