2016-09-18 8 views
0

私のMySQLデータベースに 'Users'というテーブルがあり、そのテーブルに 'Username'と 'Password'という2つのカラムがあるとします。ある時点で、パスワードなしですべてのユーザー名を取得したいと考えています。私がやったことだった。1つのカラムの全エントリを取得

$query = mysql_query("SELECT Username FROM Users"); 
$result = mysql_fetch_array($query); 
foreach($result as $r){ 
    echo $r; 
} 

今、私はのは、彼らは単に「ユーザー1」と「ユーザー2」であることを言わせて、私のユーザーテーブルにのみ2つのエントリがあります。上のコードは、私の両方を表示するのではなく、最初のユーザーを示しています。なぜこのようなことが起こるのか、どうやって解決するのか理解できません。また、最後にWHERE 1を追加してクエリを変更しようとしましたが、同じ結果が得られます。

一方、PhpMyAdmin内でこのクエリを実行すると、User1とUser2の両方が返されます。

アイデア?ありがとう。

+0

クエリに間違いはありません。 mysql_fetch_arrayは一度に行を返し、それを反復処理する必要があります。 – algrebe

+0

あなたは[mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-use-mysql-functions-in-php)を使用するたびに_meow_コード データベース拡張子 ** [子猫は世界のどこかで絞め殺されている](http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg)**これは廃止され、何年も前から消え去っているこれまでPHP7のために。 PHPを学んでいるだけの方は、 'PDO'または' mysqli'データベースの拡張機能を学んでください。 [こちらから](http://php.net/manual/en/book.pdo.php) – RiggsFolly

答えて

1

はあなたが結果セットから1行しかフェッチしている、ここで

$result = mysql_fetch_array($query); 

をこの文を参照してください。ループのすべてのユーザ名を表示するようにwhile()ループを使用して結果セットを、次のように:

$query = mysql_query("SELECT Username FROM Users"); 
while($result = mysql_fetch_array($query)){ 
    echo $result['Username'] . '<br />'; 
} 

追記:mysql_データベースの拡張機能を使用しないでください、彼らは、PHP 5.5.0において廃止され、除去しましたPHP 7.0.0。代わりにmysqliまたはPDOの拡張子を使用してください。そして、これはwhy you shouldn't use mysql_* functionsです。