PHP模板循环缓冲

时间:2011-01-08 01:52:10

标签: php buffering

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

功能......

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 个答案:

答案 0 :(得分:0)

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