0

私は mysqli_fetch_array に慣れておらず、これを理解できないようです。次のコードがあります。

function select_fetch_row ($arg1, $arg2) {
    $con = new mysqli(/* ... */);
    $query = "SELECT $arg1 FROM $arg2";
    $select = mysqli_query($con, $query);
    while($row = mysqli_fetch_array($select, MYSQLI_NUM)){
        echo $row[0];
    }

}

select_fetch_row(/* parameters*/);

しかし、私はそれが何をしているのか理解していません。各キーがテーブルの行に対応する配列を取得することを期待していましたが、コードを出力すると、最初の行の値 ( $row[0]) だけがエコーされるのではなく、列のすべての値がエコーされます。この機能が実際にどのように機能するかについて、誰かが光を当てることができますか?

4

1 に答える 1

2
while($row = mysqli_fetch_array($select, MYSQLI_NUM)){
        echo $row[0];
    }

単一の配列ではなく、行を 1 つずつフェッチしています。したがって、各 $row 変数には、テーブルの 1 つの行があり、各キーには列の値が含まれています。$row[0] を echo すると、返された行の最初の列が表示されます。

パラメーター MYSQLI_NUM を MYSQLI_ASSOC に変更すると、何が起こっているかをよりよく理解できます (配列キーには、整数ではなく列名が含まれます)。

一度にすべての行をフェッチしたい場合は、代わりに mysqli_fetch_all を使用できます。これにより、キーごとに 1 つの行を含む 1 つの大きな配列が得られます。

http://www.php.net/manual/en/mysqli-result.fetch-array.php

http://www.php.net/manual/en/mysqli-result.fetch-all.php

于 2013-10-12T02:11:33.883 に答える