将所有数据库表放入数组的函数

时间:2010-03-18 23:50:57

标签: php mysql

我编写了一个函数来将数据库表打印到像这样的数组

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

我的功能是:

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;
                        }

我的功能有什么不对。任何帮助都对我的问题表示赞赏。提前致谢

3 个答案:

答案 0 :(得分:2)

好像你正在尝试打印一个表(不是数据库)

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;
}

(编辑:修复了print_r中缺少的第二个参数)

答案 1 :(得分:0)

看起来它会起作用,但有点破坏了关系数据库的目的..为什么不将序列化数据并将其写入文件?

答案 2 :(得分:0)

我不确定您的函数是否会获取数据库返回的所有行。 mysql_fetch_array()只返回一行。所以for循环是没有意义的。

相反,你应该这样做而不是for循环。

while($row = mysql_fetch_array($query) {
  $allArrays[] = $row;
}

顺便说一句,如果你仍然想要使用for循环,你可以试试这样的东西。 But what would be the point? while循环非常适用于此。

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