在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扩展名。相关文章