2010-03-18 3 views
3

j'ai écrit une fonction pour imprimer la table de base de données à un tableau comme celui-ciFonction pour mettre toutes les tables de base de données à un tableau

$db_array= 
Array(
    ID=>1, 
    PARENTID =>1, 
    TITLE => LIPSUM, 
    TEXT =>LIPSUM 
    ) 

Ma fonction est:

function dbToArray($table) 
         { 
          $allArrays =array(); 
          $query = mysql_query("SELECT * FROM $table"); 
          $dbRow = mysql_fetch_array($query); 
          for ($i=0; $i<count($dbRow) ; $i++) 
           { 
            $allArrays[$i] = $dbRow; 
           } 
          $txt .='<pre>'; 
          $txt .= print_r($allArrays); 
          $txt .= '</pre>'; 
          return $txt; 
         } 

Quelque chose ne va dans ma fonction. Toute aide est appréciée à propos de mon problème. Merci à l'avance

+2

'if' (vous obtenez une erreur)' then' collez l'erreur; –

+0

pas d'erreur, mais la production est répétée 21 fois: Tableau ( [0] => Tableau ( [0] => 1 [ID] => 1 [1] => 0 [PARENTID] = > 0 [2] => 1 [CATID] => 1 [3] => NEWSS [CATNAME] => NEWSS [4] => 1 ) ) –

+0

Ceci est probablement parce que votre table contient 21 colonnes. Et vous êtes en boucle sur la même ligne encore et encore. mysql_fetch_array() retourne seulement une ligne. Donc, si vous voulez passer à d'autres lignes. Il devrait être appelé encore et encore. – Sinan

Répondre

0

Je ne suis pas sûr que votre fonction obtenir toutes les les lignes renvoyées par la base de données. mysql_fetch_array() renvoie une seule ligne. Donc, la boucle for est plutôt inutile. Au lieu de cela vous devriez quelque chose comme ceci au lieu de la boucle for. D'ailleurs, si vous voulez toujours utiliser la boucle for, vous pouvez essayer quelque chose comme ça. But what would be the point? la boucle while fonctionne parfaitement pour cela.

$numRows = mysql_num_rows($query); 
for($i = 0; $i < $numRows; $i++) { 
    $allArrays[$i] = mysql_fetch_array($query); 
} 
+0

sortie est: Tableau ( [0] => Tableau ( [0] => 1 [ID] => 1 [1] => 0 [PARENTID] => 0 [2 ] => 1 [CATID] => 1 [3] => NEWSS [CATNAME] => NEWSS [4] => 1 [BASEID] => 1 [5] => 19/03/2010 01:10:51 [TARIH] => 2010-03-19 01:10:51 [6] => Nouvelles Head [BASLIK] => Nouvelles Head [7] => Lorem ipsum d olor [MANSET] => Lorem ipsum ) ) ) ) BTW Je veux une fonction pour imprimer des tableaux ... –

+1

il suffit de changer votre boucle avec l'un des plus haut. Et ajoutez un second paramètre 'true' à print_r comme @jwandborg dit. – Sinan

0

Il semble que cela fonctionnera, mais cela va à l'encontre du but d'une base de données relationnelle. Pourquoi ne pas simplement sérialiser vos données et les écrire dans un fichier?

+0

Salut Brendan; Je le fais (sérialiser les données et les écrire dans un fichier?). Mais je suis à la recherche d'une fonction globale pour le faire. –

+0

Il semblerait que la première rangée apparaisse encore et encore. – Sinan

2

On dirait que vous essayez d'imprimer une table (pas une base de données)

function printTable($table){ 
    $allRows = array(); 
    $query = mysql_query("SELECT * FROM $table"); 
    while($row = mysql_fetch_array($query)){ 
     $allArrays[] = $row; 
    } 
    $txt ='<pre>'; 
    $txt .= print_r($allRows, true); 
    $txt .= '</pre>'; 

    echo $txt; 

    return $txt; 
} 

(Edit: second paramètre fixe manquant dans print_r)

+0

Ceci imprime la sortie vide –

+4

'print_r ($ allRows);' devrait être 'print_r ($ allRows, true);'. Voir http://php.net/print_r – joar

+0

C'est correct, j'ai mis à jour le code.Merci –

Questions connexes