2011-01-08 110 views
2

我基本上在查询上运行循环,并使用PHP的缓冲在循环中插入模板文件。问题是如果我在查询中有多个结果,我最终会得到两个或更多相同的结果(循环相同的数据,而不是mysql结果行中的下一个结果)。PHP模板循环缓冲

功能...

function get_blocks(){ 
    $query = "SELECT * FROM `my_table`"; 
    $results = mysql_query($query); 

    while($data = mysql_fetch_assoc($results){ 
     extract($data, EXTR_SKIP); 
     ob_start(); 
     include(dirname(__FILE__) . '/templates/infoBlock.php'); 
     $returnString .= ob_get_clean(); 
    } 
    echo $returnString; 
} 

模板的样子:

<div> 
    Hi my name is <?php echo $name; ?> 
    <br> 
    and my age is <?php echo $age; ?> 
</div> 

所以,如果我有两个记录:

record 1 
name: Joe 
age: 42 

record 2 
name: Sam 
age: 35 

我结束了

Hi my name is Joe 
and my age is 42 


Hi my name is Joe 
and my age is 42 

代替

Hi my name is Joe 
and my age is 42 


Hi my name is Sam 
and my age is 35 

我已经尝试过

echo ob_get_clean(); 

,并采取$ returnString出来的功能都无济于事......

想法?

+1

我想我只是想出了它......这是EXTR_SKIP – 2011-01-08 01:52:54

回答

0

我忽略了提取函数中的EXTR_SKIP参数。 EXTR_SKIP导致任何已被设置为不被覆盖的变量(据我所知,有一点安全功能)