0

私はデータベース内のすべてのレコードを生成する際に常にwhileループを使用しています。私の友人の何人かは、データベースからレコードを生成する際にforeachを使用する方がよいと言っていましたが、方法がわかりません。

<?php
    $query =  mysql_query("select * from sampleTABLE");
    while($i =  mysql_fetch_array){
    echo $i['samplefieldName'];
    }
?>

私の質問は、foreachを使用してデータベースのレコードを表示する方法です。そして、誰かがwhileループで構文とその結果を生成するという点でそれを比較できます、ありがとう。

4

4 に答える 4

2

@Zerkmsが言うように、ここにいる間ではなくforeachを使用する必要はありません

 while($i =  mysql_fetch_array( $query)){

しかし、あなたは以下のコードでこれを行うことができますが、私はそれが良いアプローチではないと確信しています

$result_list = array();
while($row = mysql_fetch_array($query)) {
   result_list[] = $row;
}

foreach($result_list as $item) {
   //you can now echo $item ; or whatever you want
}

ノート

  1. ext/mysqlプレフィックスmysql_で指定されたすべての関数を提供するPHP拡張機能全体は、PHP v5.5.0で正式に非推奨になり、将来削除される予定です。したがって、PDOまたはMySQLi

よく読んで

  1. mysql拡張機能は非推奨であり、将来削除される予定です。代わりにmysqliまたはPDOを使用してください。
  2. MySQL開発者向けのPDOチュートリアル
  3. 初心者のためのPdoチュートリアル
于 2013-02-06T11:20:23.480 に答える
2

まず、mysql_xxx()関数は非推奨です。使用はお勧めしません。代わりに推奨される PHP の代替手段が 2 つありmysqli()ますPDO

古いmysql_xxx()関数では、レコードセットをループするために使用できません。foreach

ただし、どちらの新しい代替 APIIteratorインターフェイスを実装しているため、これが可能です。

はい、foreachPHP でレコードセットをループするために使用することは可能ですが、古いmysql_xxx()関数ではできません。

次のようなコードを記述できます。

$conn = new mysqli(....);
foreach ( $conn->query('SELECT ....') as $row ) {
    print_r($row);
}

またはこのように:

$db = new PDO('mysql:....', $user, $pass);
foreach ($db->query('SELECT ....') as $row) {
    print_r($row);
}

そうは言っても、これは PHP v5.4 以降でのみ可能であることに注意してくださいmysqli。そのため、PHP バージョンを最新にする必要があります。PDO一方、この機能は古くからサポートされています。

もちろん、どちらもループを使用することもできます。実際にはとここにwhile違いがないため、これはあなたの友人が正しくないところです。からに切り替えても、コードのパフォーマンスに違いはありません。彼らはボンネットの下で同じことをします。この場合、実際には単なる「シンタックス シュガー」です。whileforeachwhileforeachforeach

foreachループを行う予定がない場合でも、これらの新しい API のいずれかに切り替えることを強くお勧めします。なぜなら、古いmysql関数は非推奨であり、将来の PHP から完全に削除される可能性が高いためです。バージョン。したがって、コードを将来も実行し続けたい場合は、今すぐ切り替える必要があります。

于 2013-02-06T11:42:16.710 に答える
1

を使用して結果セットを反復処理することはできませんforeach

foreachすでにデータを取得している場合にのみ機能します。

つまり、あなたの友人は単に間違っていて、彼のアドバイスは何の意味もありません。

于 2013-02-06T11:25:54.807 に答える