本文介绍了在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连接器已弃用。强烈反对使用此扩展。而应使用MySQLiPDO_MySQL扩展名。

这篇关于在Smarty中返回数据库值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 23:28