ホームページ >バックエンド開発 >PHPチュートリアル >mysqli の fetch_assoc() メソッドでエラーに遭遇した人はいますか?解決

mysqli の fetch_assoc() メソッドでエラーに遭遇した人はいますか?解決

WBOY
WBOYオリジナル
2016-06-13 13:38:371223ブラウズ

mysqli の fetch_assoc() メソッドでエラーに遭遇した人はいますか?
構成はphpnow5.1.6:windowsXP + php5.2.14 + apache2.2.6 + MySQL5.1.50です

mysqliクラスのfetch_assoc()を使用するとApacheが停止してしまうようです。次のコードを参照してください。

PHP コード
<!--

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] に置き換えれば大丈夫です。
しかし、コードが不明瞭になることがあります。解決策はありますか? !
長い間オンラインで検索しましたが、そのような問題に遭遇した人はほとんどいないことがわかりました。たとえ遭遇したとしても、それは単なる書き込みエラーか何かであり、私の問題を解決するのには適していません。

-----解決策--------------------------------
$rs->fetch_array メソッドを使用する
------解決策------------------
fetch_array() を使用してパラメータを追加するだけです: MYSQLI_ASSOC[関連付け]、MYSQLI_NUM[数値]、MYSQLI_BOTH[すべて]
PHP コード

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

/* 接続を確認します */
if (mysqli_connect_errno()) {
    printf("接続に失敗しました: %sn", mysqli_connect_error());
    出口();
}

$query = "都市から名前、国コードを選択 ID 制限 3 で注文";
$result = $mysqli->query($query);

/* 数値配列 */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)n", $row[0], $row[1]);

/* 連想配列 */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)n", $row["名前"], $row["国コード"]);

/* 連想配列と数値配列 */
$row = $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)n", $row[0], $row["国コード"]);

/* 無料の結果セット */
$result->close();

/* 接続を閉じる */
$mysqli->close();
?>
<br /><font color='#e78608'>------解決策---------</font><br />エラーメッセージはありませんか?<br />次のようになります。エラー表示機能がオンになっていない
<br /><font color='#e78608'>------解決策------------------</font><br />
関連するフィールドがデータベース内のフィールドに対応していない可能性があります。 <br />他に方法はありません。プリコンパイルを使用します: <br /><dl class='code'>PHP コード<pre class="brush:php;toolbar:false">

$sql = "mov_film から Mid,movName,movType,movStar,movImg,movPlay,director,producter を選択します";
        $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 = 配列();
            while($stmt->fetch()){
                //パスからファイル名を取り出して相対パスに変換します
                $movImg = "../../images/".basename($movImg);
                //ファイル名をインターセプトする
                $arrStr =explode(".",basename($movPlay));
                $movPlay = "../../videos/".$arrStr[0];

                $arr = 配列(
                    "ミッド" => $ミッド、
                    "movName" => $movName,
                    "movType" => $movType、
                    "movStar" => $movStar,
                    "movImg" => $movImg,
                    "movPlay" => $movPlay,
                    "ディレクター" => $ディレクター、
                    "プロダクト" =>
                );
                array_push($arrMovie,$arr);
            }
            $arrMovie を返します。
        <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。