由于无法弄清楚这一点,我感到非常愚蠢,但我猜这就是Stackoverflow的用途。如果有人能指出我有用的资源或向我解释如何解决这个问题,我将非常感激。
基本上我从表中获取几行,现在我需要能够将它们打印出每行的字段的值,然后是来自不同字段的每行的值,依此类推。这很难解释,但让我举个例子。
假设我们有一个包含三个字段的表:id - name - url。现在我希望能够按以下顺序输出结果:
1
2
3
John
Steven
Patrick
http://google.com/
http://stackoverflow.com/
http://php.net/
如何实现此循环查询结果?
答案 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'];
}
然后迭代三个数组。这样做肯定有更好的方法!