MySql获取读取行数和Smarty遍历数组

今天在处理自己网站的时候遇到了smarty遍历二维数组的问题,用 $row['id']被拒,看来在smarty的语法和php还不是完全共同的。从网上查资料最后终于解决了,今天又两点分享,如下。
一:mysql执行一次获取共读取的数据行数和数据

$query = "SELECT SQL_CALC_FOUND_ROWS * FROM title WHERE ID >1000 LIMIT 10;";
$result = $db->query($query);
$line = $db->fetch_row($db->query("SELECT FOUND_ROWS();"));

上面的代码是我在自己项目里面封装的,用于获取推荐站点数目的函数。大家会看到SQL_CALC_FOUND_ROWS ,这个是mysql的特性,如果查询的时候在sql语句里面查询他的话,mysql会在执行的时候缓存这个东西,然后你下面用select found_rows函数就可以获取这个缓存的上次查询获取行数的变量值。这也就是说你只用了一次真是的数据库查询操作就完成了获取数据和count(*)的工作,值得推广。

二:smarty里面遍历数组

<?php
$items_list = array(23 => array('no' => 2456, 'label' => 'Salad'),
                    96 => array('no' => 4889, 'label' => 'Cream')
                    );
$smarty->assign('items', $items_list);
?>

上面这段代码就是自己造个假数组,然后把它赋值给我们的模板,让smarty模板来填充。针对上面这种数组使我们在查询sql数据库返回数组最常见的一种形式,说以我们要记住它在smarty模板里面怎么解析。下面是代码:

<ul>
{foreach from=$items key=myId item=i}
  <li><a href="item.php?id={$myId}">{$i.no}: {$i.label}</li>
{/foreach}
</ul>

上面的key 和item是smarty foreach遍历的参数,一个代表键值对的key也就是rowname,一个是value就是我们要的值了。用foreach遍历的时候,二维数组的第二位获取它的值得时候用$i['id']这种传统的php获取数组值得方法不行,smarty里面可以用.来访问二维数组的值,这个很酷,仿佛是smarty把数组给咱们弄成了匿名类,具体的实现没看,有时间看看。

posted on 2010-06-09 22:42  JesseZhao  阅读(3487)  评论(0编辑  收藏  举报

导航