sql >> データベース >  >> RDS >> Mysql

mysql_fetch_arrayおよびPHPのwhileループ

    あなたはこれらのものがどのように機能するかを根本的に誤解しています。

    mysql_fetch_arrayの「配列」 はすべてのレコードの配列ではなく、現在のレコード内のデータの配列です。

    あなたの場合、単一のフィールドのみをフェッチしているため、配列には単一の要素(つまり、$row[0])のみが含まれます。 )ですが、原則は同じです。これは、今読んだ単一のレコードの配列です。

    現在のレコードのデータのみが一度に配列に含まれます。それがwhile ループはforです。各レコードのロードを次々に戻します。

    すべてのデータを含む配列を作成する場合は、次のようにする必要があります。

    $fullData = array()
    while($row = mysql_fetch_array($tableIndex) ){
        $fullData[] = $row[0];
    }
    

    それはあなたが読んでいるすべてのデータを単一の大きな配列に入れます、それはあなたが期待しているものです。これで、質問でやりたいことができるようになりました:

    echo $fullData[0].'<br>';
    echo $fullData[1].'<br>';
    echo $fullData[2].'<br>';
    

    お役に立てば幸いです。

    ここで指摘する価値があるのは、mysql_xxx() 機能のファミリーは廃止され、廃止されたと見なされます。 PHPを学習しているだけの場合は(そう思われるかもしれませんが)、これらの関数の学習をやめて、PDOを学習することを強くお勧めします。 代わりにライブラリ。それはより現代的であり、mysqlよりも多くの機能を備えています 関数は提供できません。さらに、PHPの将来のバージョンでは、mysqlが削除されます。 完全に機能するので、ある時点で切り替える必要があります。まだ学習している間に、今でも切り替えられる可能性があります。

    また(質問に関連するものを維持するために)、PDOライブラリには、1つの関数で探していることを実際に実行する機能があります:PDO::fetchAll() 。この方法を使用すると、できる whileループを実行する必要なしに、すべてのデータを1行の単一の大きな配列にフェッチします。コードは次のようになります:

    $sth = $dbh->prepare("SELECT name, colour FROM fruit");
    $sth->execute();
    $result = $sth->fetchAll();
    

    PDO::fetchAllのPHPマニュアルから抜粋した例



    1. データベーススーパーユーザーになる-Engineyard

    2. GUIDの衝突は可能ですか?

    3. PostgreSQLセキュリティのベストプラクティス

    4. ORA-01804 OracledbDriverのロード中にエラーが発生しました