PDO : obtenir les noms des colonnes d'un jeux de résultat
Posté : 09 nov. 2011, 16:47
salut,
la question parait conne mais la je sèche :/
J'utilise des requêtes à la volée, et je ne sais pas combien de champs je vais récupérer ni même comment ils s'appellent.
en gros
j'ai donc pensé à
$d = array_keys($result->fetch(PDO::FETCH_ASSOC));
for ($i=0;$i<$result->columnCount();$i++){
echo '<td class="centertext">'.$d[$i].'</td>' ;
}
mais en fait non, car même si pdostatement implémente l'interface traversable elle fait partie des exceptions qui n'ont pas besoin d'implementer itérator.
et la c'est le drame, pas de rewind() et je ne trouve pas de moyen de remettre le jeux de résultat à "zéro".
la question est donc : est ce qu'il y a moyen remettre le jeux de résultat au début à la manière d'un mysql_data_seek ou d'un rewind de l'interface iterator ?
oui je sais question à la con mais bon
mici
@+
la question parait conne mais la je sèche :/
J'utilise des requêtes à la volée, et je ne sais pas combien de champs je vais récupérer ni même comment ils s'appellent.
en gros
<?php
$requete = array( 'requete 1','requete2');//etc etc
$pdo = new pdo();
foreach ($requete as $r ) {
$result = $pdo->query($r);
echo '<table>';
echo '<thead><tr>';
for ($i=0;$i<$result->columnCount();$i++){
echo '<td> </td>';
}
echo '</tr></thead><tfoot><tr>';
for ($i=0;$i<$result->columnCount();$i++){
echo '<td> </td>';
}
echo '</tr></tfoot>';
while ($data = $result->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>';
$i =0;
foreach ($data as $c) {
$i++;
echo '<td class="centertext';
if ($i == $result->columnCount()) echo ' last';
echo '">'.$c.'</td>';
}
echo '</tr>';
}
echo '</table>';
}
?>
ça marche au poil mais c'est moche, avec le nom des colonnes ça serait beaucoup plus sympa. j'ai donc pensé à
$d = array_keys($result->fetch(PDO::FETCH_ASSOC));
for ($i=0;$i<$result->columnCount();$i++){
echo '<td class="centertext">'.$d[$i].'</td>' ;
}
mais en fait non, car même si pdostatement implémente l'interface traversable elle fait partie des exceptions qui n'ont pas besoin d'implementer itérator.
et la c'est le drame, pas de rewind() et je ne trouve pas de moyen de remettre le jeux de résultat à "zéro".
la question est donc : est ce qu'il y a moyen remettre le jeux de résultat au début à la manière d'un mysql_data_seek ou d'un rewind de l'interface iterator ?
oui je sais question à la con mais bon
mici
@+