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

3
我已经写了一个函数,可以将数据库表格打印成如下的数组
$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;
                        }

我的函数有什么问题吗?对于我的问题,任何帮助都将不胜感激。提前致谢。


2
如果(你遇到了错误)那么就把错误信息粘贴出来; - N 1.1
没有任何错误,但输出重复了21次: 数组 ( [0] => 数组 ( [0] => 1 [ID] => 1 [1] => 0 [PARENTID] => 0 [2] => 1 [CATID] => 1 [3] => 新闻 [CATNAME] => 新闻 [4] => 1 ) ) - jasmine
这可能是因为您的表包含21列。而您正在一遍又一遍地循环同一行。mysql_fetch_array()仅返回一行。所以如果你想移动到其他行,它应该被一遍又一遍地调用。 - Sinan
3个回答

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

(Edit: fixed missing second parameter in print_r)


4
print_r( $allRows ); 应该改为 print_r( $allRows, true );。参见 http://php.net/print_r 。 - joar

0

我不确定你的函数是否能获取数据库返回的所有行。mysql_fetch_array() 只返回一行。因此,for循环是相当无意义的。

相反,你应该使用像这样的代码而不是for循环。

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

顺便说一下,如果你仍然想使用for循环,你可以尝试像这样做。但是这样做有什么意义呢?while循环对此非常完美。
$numRows = mysql_num_rows($query);
for($i = 0; $i < $numRows; $i++) {
  $allArrays[$i] = mysql_fetch_array($query);
}

数组 ( [0] => 数组 ( [0] => 1 [ID] => 1 [1] => 0 [PARENTID] => 0 [2] => 1 [CATID] => 1 [3] => 新闻 [CATNAME] => 新闻 [4] => 1 [BASEID] => 1 [5] => 2010-03-19 01:10:51 [TARIH] => 2010-03-19 01:10:51 [6] => 新闻标题 [BASLIK] => 新闻标题 [7] => Lorem ipsum dolor
[MANSET] => Lorem ipsum ))顺便说一下,我想要一个打印数组的函数...
- jasmine
1
只需将您的for循环替换为上述之一。并像@jwandborg所说,向print_r添加第二个参数“true”。 - Sinan

0

看起来它会工作,但有点违反关系型数据库的目的。为什么不只是序列化你的数据并将其写入文件呢?


你好,Brendan; 我正在做这件事(将数据序列化并写入文件?)。但是我正在寻找一个全局函数来完成这个任务。 - jasmine
看起来它只会一遍又一遍地显示第一行。 - Sinan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接