2011-07-05 7 views
0

Je me sens incroyablement stupide de ne pas être capable de comprendre cela, mais je suppose que c'est ce que Stackoverflow est pour. Si quelqu'un pouvait me diriger vers des ressources utiles ou m'expliquer comment résoudre cela, je serais très reconnaissant. Fondamentalement, je récupère quelques lignes d'une table, et maintenant je dois être capable de les imprimer la valeur du champ de chaque ligne, suivi par les valeurs de chaque ligne d'un champ différent, et ainsi de suite . C'est difficile à expliquer, mais laissez-moi vous donner un exemple. Disons que nous avons une table avec trois champs: id - name - url. Maintenant, je veux être en mesure de produire le résultat dans cet ordre:Imprimer les résultats mysql colonne par colonne

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

Comment puis-je boucle à travers les résultats de ma requête afin d'atteindre cet objectif?

Répondre

3

Eh bien, vous devriez faire un tableau et crachent alors dehors:

$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

Bien que n'étant pas fou élégant, cela fonctionne et est très simple à faire. Je vous remercie! –

+0

@Tommy, nous vous souhaitons la bienvenue^_ ^ – Neal

0

Vous pouvez le faire via union. La seule partie délicate consiste à s'assurer de convertir tous les champs en un type de données commun (dans ce cas, du texte). De plus, chaque sous-requête est triée par id pour s'assurer que la commande est cohérente.

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

La façon la plus simple est

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

Ensuite, vous itérer sur les trois tableaux. Il y a sûrement de meilleures méthodes pour le faire!

Questions connexes