php mysql数据只显示带有foreach循环的一行

时间:2011-05-02 16:26:32

标签: php mysql loops foreach

好吧,我有这个,它没有显示从mysql数据库中获取的所有行,如下所示:

  mysql_select_db($database_config, $config);
    $query_cat = "SELECT * FROM cat";
    $cat = mysql_query($query_cat, $config) or die(mysql_error());
    $row_cat = mysql_fetch_array($cat);

    $arr = array("TIT" => $row_cat['title'],
            "DES" => $row_cat['description']);


    foreach($arr as $ar){
    echo $ar;
    }

现在它只显示第一行,然后停止为什么它不显示所有字段,我不想使用while循环,因为它可以解释我的问题??

编辑:基本上我想像这样工作

$p = "{TIT}{DES}";
foreach($arr as $k => $p){
$p = str_replace("{".$k."}", $v, $p);
echo $p;
}

现在问题不在于str_replace与循环或数据库的关系,因为数据库行没有递增,只显示一个数据。

2 个答案:

答案 0 :(得分:4)

这将始终返回第一行。你只获取一次只会返回第一行。

相反,您必须使用循环

中的fetch语句获取所有行
 while($row_cat = mysql_fetch_array($cat)){
       echo $row_cat['title'];
       echo $row_cat['description'];
    }

答案 1 :(得分:0)

来自PHP mysq_fetch_array documentation

  

“返回与获取的行对应的数组,并将内部数据指针向前移动”

据我所知,如果不使用循环,则无法检索每一行。你应该做类似的事情:

while($row_cat = mysql_fetch_array($cat)){
  echo $row_cat['title'];
  echo $row_cat['description'];
}