2011-07-05 26 views
0

私はこれを理解することができないために信じられないほど馬鹿だと感じますが、それはStackoverflowのためのものです。誰かが私に役立つリソースを教えたり、これを解決する方法を私に説明することができれば、私は非常に感謝しています。列ごとにmysql結果を出力

基本的に私はテーブルからいくつかの行をフェッチしていますが、今は各行のフィールドの値を出力し、その後に別のフィールドの各行の値を出力する必要があります。説明するのは難しいですが、私に例を挙げましょう。

id-name-urlの3つのフィールドを持つ表があるとします。今私はこの順序で結果を出力することができるようにしたい:

1 
2 
3 
John 
Steven 
Patrick 
http://google.com/ 
http://stackoverflow.com/ 
http://php.net/ 

はどのようにこれを達成するために、私のクエリの結果を通じてIループしていますか?

答えて

3

さてあなたは、配列を作成し、それを吐き出す必要があります。

$ids = array(); 
$names = array(); 
$urls = array(); 
while($row = ...){ 
    $ids[] = $row['id']; 
    $names[] = $row['name']; 
    $urls[] = $row['url'];  
} 

foreach($ids as $id) { 
    echo $id . PHP_EOL; 
} 
//do the same for the other 2 
+0

エレガントでクレイジーではありませんが、これは機能し、非常に簡単です。ありがとうございました! –

+0

@Tommy、ur welcome^_ ^ – Neal

0

あなたはunion経由でこれを行うことができます。難しいのは、すべてのフィールドを共通のデータ型(この場合はテキスト)にキャストすることだけです。また、各サブクエリは、順序が一貫していることを確認するためにidによって順序付けられます。

select id::text 
from table 
order by id 
union 
select name::text 
from table 
order by id 
union 
select url::text 
from table 
order by id 
0
$result = mysql_query("SELECT id, name, url FROM yourtable") or die(mysql_error()); 
$data = array() 
while($row = mysql_fetch_asssoc($result)) { 
    $data[] = $row; 
} 
foreach(array('id', 'name', 'url') as $key) { 
    foreach($data as $idx => $val) { 
     echo $val[$key], "\n"; 
    } 
} 
0

最も簡単な方法は、

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $ids[] = $row['id']; 
    $names[] = $row['names']; 
    $wwws[] = $row['website']; 
} 

その後、あなたは3つの配列を反復処理しています。これを行うための確実な方法があります。

関連する問題