【问题标题】:PHP Template Buffering in a Loop循环中的 PHP 模板缓冲
【发布时间】:2011-01-08 01:52:10
【问题描述】:

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

想法?

【问题讨论】:

  • 我想我刚刚想通了...这是EXTR_SKIP
  • 如果可以解决您的问题,您可以将其作为答案发布并接受。这将有助于本页的未来读者。

标签: php buffering


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多