1

私は mysql と php のビデオ チュートリアルに従っていますが、特定のコード行で少し混乱しています。

    <?php

            $result = mysql_query("SELECT * FROM subjects", $connection);
                if(!$result){
                die("Database query failed: " .mysql_error());
                    }


                while($row = mysql_fetch_array($result)){
                echo $row["Menu_Name"]." ".$row["position"]."<br/>";
                    }
                    ?>

このコードが何をしているのかを本当に理解したいので、正しく理解できるかどうか見てみましょう. 基本的に、画面上で行うことは、テーブルのサブジェクトに格納されているさまざまなアイテムを返し、それらをその位置に表示することです。1 つは各項目のテキストを格納する [menu-name] で、もう 1 つはアイテムが表示される順序を格納する [position] です。そのため、while ループはこの配列と出力を通過します。しかし、それは私が得られないものです。$row は何をし、どのように処理してループするのですか? 私はここから離れている可能性があり、誰かがこれに光を当てることができることを望んでいました.

4

4 に答える 4

2

mysql_queryMySQL クエリを送信します。mysql_query()指定された に関連付けられているサーバー上の現在アクティブなデータベースに、一意のクエリ (複数のクエリはサポートされていません) を送信します。ユーザーがクエリによって参照されるテーブルにアクセスする権限を持っていない場合mysql_query()も、失敗して戻ります。FALSE

mysql_fetch_array結果行を連想配列、数値配列、またはその両方としてフェッチします。フェッチされた行に対応する文字列の配列を返します。またはFALSE、それ以上行がない場合に返します。

最後に、関数で何が起こっているのか知りたい場合は、ドキュメントを参照してみてください。ほとんどの場合に役立ちます。

あなたが尋ねた質問によると、基本的な MYSQL と PHP のレッスンを受ける必要があると思います。

于 2013-03-22T05:58:33.673 に答える
0

この行は、テーブルレコードを1行ずつ取得しています。これは実際にはテーブルレコードを表す配列です。

    $row = mysql_fetch_array($result)

これで、この配列はテーブルフィールド名でインデックス付けされます。クエリは「select*」であるため、すべてのフィールドを取得することを意味します。

それで、

$row["Menu_Name"] 

現在の行のテーブル'subjects'のフィールド'Menu_Name'の値を持っています。

于 2013-03-22T06:03:19.203 に答える
0

これらは 2 つの配列ではありません。それは多次元の1つの配列です

while($row = mysql_fetch_array($result)){

そのコード行を実行すると、結果のリストから 1 つの完全な行が取得され、それが という名前の配列に割り当てられ$rowます。次に、書いたのと同じように、インデックス名を付けてそこからデータを取得できます

$row["Menu_Name"]

データベースから取得した値を含むMenu_Name配列のインデックスも同様です。$rowこのステートメントはループ内に存在するため、返された結果のすべての行をループし、それぞれに対して同じことを行います。

于 2013-03-22T05:57:43.107 に答える
0

チュートリアルの例http://www.devmanuals.com/tutorials/php/phpmysql/php-mysql-fetch-array-example.htmlを参照してください。疑問が解消されるかもしれません

于 2013-03-22T06:13:00.150 に答える