MySql擷取讀取行數和Smarty遍曆數組

來源:互聯網
上載者:User

今天在處理自己網站的時候遇到了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把數組給咱們弄成了匿名類,具體的實現沒看,有時間看看。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.