逐列打印mysql结果

时间:2011-07-05 16:11:32

标签: php mysql

由于无法弄清楚这一点,我感到非常愚蠢,但我猜这就是Stackoverflow的用途。如果有人能指出我有用的资源或向我解释如何解决这个问题,我将非常感激。

基本上我从表中获取几行,现在我需要能够将它们打印出每行的字段的值,然后是来自不同字段的每行的值,依此类推。这很难解释,但让我举个例子。

假设我们有一个包含三个字段的表:id - name - url。现在我希望能够按以下顺序输出结果:

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

如何实现此循环查询结果?

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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";
   }
}

答案 3 :(得分:0)

最简单的方法是

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

然后迭代三个数组。这样做肯定有更好的方法!