在Smarty中显示子查询结果ADODB

时间:2016-08-30 09:41:39

标签: php mysql subquery smarty adodb

我在PHP文件中进行了2次查询。第二个取决于第一个,我想在我的Smarty模板中显示结果。

但是,它没有显示出良好的效果。这是代码:

首先,查询:

$sql            = "SELECT * FROM albums order by id ASC";
$rs             = $conn->execute($sql);
$galeries       = $rs->getrows();

foreach ( $galeries as $galerie ) {
    $sqlgal = "SELECT id, filename, id_album FROM pictures where id_album = ".$galerie['id']." order by id ASC limit 0,1 ";
    echo $sqlgal;
    $rsgal = $conn->execute($sqlgal);
    $picture1 = $rsgal->getrows();
}

我将结果分配给变量:

$oSmarty->assign('galeries', $galeries);
$oSmarty->assign('pictures', $picture1);

现在在我的模板中:

{section name=i loop=$galeries}
<div class="item">
    <div class="well">
    <a href="/galerie/{$galeries[i].id}/{$galeries[i].title|clean}.html" class="thumbnail"><img src="/photos/{$galeries[i].filename}/{$pictures[i].filename}" class="img-responsivetotal"></a>
    </div>
</div>
{/section}    

我有关于galerie的信息,但图片文件名没有出现。怎么了?我在ADODB中找不到任何关于子查询的内容。

1 个答案:

答案 0 :(得分:0)

你的PHP代码中关于图片的逻辑似乎是错误的:你遍历每个画廊:

foreach ( $galeries as $galerie )

并在每个循环中将数据分配给$ picture1,从而破坏前一循环中的任何数据:

$picture1 = $rsgal->getrows();

所以,最后,$ pictures1只有最后一个画廊的图片。我想你忘了自动递增数组:

$picture1[] = $rsgal->getrows();