2

我基本上是在查询上运行一个循环,并使用 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 从函数中取出无济于事......

想法?

4

1 回答 1

0

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

于 2011-01-08T02:02:41.570 回答