在Smarty中返回数据库值

2022-04-07 00:00:00 php smarty

我有此Smarty代码来获取数据:

$sel=mysql_query("select id, name from form");
$smarty->assign('contact', mysql_fetch_row($sel));
$smarty->display('testfunction.tpl');

我的模板文件:

<ul>
    {foreach from=$contact item=foo}
        <li>{$foo}</li>
    {/foreach}
</ul>

此输出:

 1
 a

但我希望输出如下:

1:a
2:b

解决方案

如果您使用mysql_fetch_row,它会完全按照它所说的做--它取出一行,但不会超过一行。我猜您的结果集是这样的(如果我错了,请在您的问题中澄清):

id  | name
----+------------
 1  | a
 2  | b

解决此问题的一种方法是构建一个数组,然后可以使用Smarty拆分该数组,如下所示:

/* PHP code */
$your_array = array();

$sel=mysql_query("select id, name from form");
while($row=mysql_fetch_array($sel)) {
   $your_array[] = $row;
}

$smarty->assign('contact', $your_array);
$smarty->display('testfunction.tpl');

现在您在Smarty中有一个数组,基本上如下所示:

[1] => (
     [0] => 1, 
     [1] => a
),

[2] => (
     [0] => 2, 
     [1] => b
)

可以按照您所描述的方式显示:

{* Smarty Code *}
<ul>
    {foreach from=$contact item=foo}
        <li>{$foo[0]}: {$foo[1]}</li>
    {/foreach}
</ul>

我还没有试过,但它应该能胜任这项工作。如果不正确,请在模板中使用{debug}以查看数组$contact是如何形成的。

另一个建议:

您在这里使用的PHPS MySQL连接器已弃用。强烈反对使用此扩展。而应使用MySQLi或PDO_MySQL扩展名。

相关文章