Search code examples
phpsmartysmarty3

How to display data in smarty when using PDO with prepared statement and executing inside foreach?


$dbh = new PDO($dsn, $user, $password, array( 
 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

$selectNumberTitle = $dbh->prepare("SELECT AdvertNumber, AdvertTitle FROM `adverts` WHERE AdvertNumber = ? ");

foreach ($advertnumber as $i => $number) {
    $selectNumberTitle->execute(array($number));
    foreach ($selectNumberTitle as $row) {
        echo $row['AdvertNumber'] . ') ' . $row['AdvertTitle'] . "<br/>";
    }
}

Above code works nicely. I need the same output in smarty.


Solution

  • $selectNumberTitleMerge = array();    
    foreach ($advertnumber as $i => $number) {
        $selectNumberTitle->execute(array($number));
        foreach ($selectNumberTitle as $row) {
            $selectNumberTitleMerge[] = $row;
            echo $row['AdvertNumber'] . ') ' . $row['AdvertTitle'] . "<br/>";
        }
    }
    $smarty->assign('selectNumberTitleMerge', $selectNumberTitleMerge);
    

    and code inside my template:

    {foreach $selectNumberTitleMerge as $r} 
        {$r.AdvertNumber})
        {$r.AdvertTitle}
        <br>
    {foreachelse}
        .. no results .. 
    {/foreach}