2011-05-02 128 views
0

好吧,我也这样与它并不显示所有的行,当从MySQL数据库中提取它是这样的:PHP MySQL的数据只显示一行与foreach循环

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函数的,因为数据库行不会增加,只显示一个数据。

+0

'mysql_fetch_array'只取一排(http://php.net/mysql_fetch_array) – mellamokb 2011-05-02 16:30:20

+0

有毛病TIT :-) – zod 2011-05-02 16:32:19

+0

我已经重新编辑过的问题,请大家看... – 2011-05-02 16:53:21

回答

4

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

相反,你必须使用循环

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

读取语句从PHP mysq_fetch_array documentation所有行获取:

“返回对应于提取行的数组和未来移动内部数据指针“

据我所知,你不能检索每一行机智hout使用循环。你应该做同样的事情到这一点:

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