2011-07-05 52 views
0

我覺得難以置信的愚蠢,因爲無法弄清楚這一點,但我想這就是Stackoverflow的目的。如果有人能指點我有用的資源或向我解釋如何解決這個問題,我會非常感激。按列打印mysql結果列

基本上,我從表中取出幾行,現在我需要能夠將它們從每一行的字段的值打印出來,然後從不同的字段的每行的值打印出來,等等。這很難解釋,但讓我舉個例子。

假設我們有一個包含三個字段的表:id - name - url。現在,我希望能夠將結果輸出順序如下:

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

如何循環通過我的查詢,以結果來實現這一目標?

回答

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,我們歡迎^ _ ^ – 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']; 
} 

然後迭代三個陣列上。這樣做肯定有更好的方法!