**get標簽**
標簽:`<get></get>`
作用:特殊標簽,SQL查詢標簽
用法示例A:`<get sql="SELECT * FROM shuipfcms_article WHERE status=99 ORDER BY inputtime DESC" page="$page" num="5"> .. HTML ..</get>`
用法示例B:`<get table="article" status="99" order="inputtime DESC" where="其它where部分條件" page="$page" num="5">.. HTML ..</get>`
[TOC]
##參數說明
| 參數 | 說明 |
| -- | -- |
| @sql | SQL語句,強烈建議只用于`select`類型語句,其他SQL有嚴重安全威脅,同時不建議直接在SQL語句中使用外部變量,如`:$_GET`,`$_POST`等。出現“`>`”,“`<`”這類,建議使用`{gt}`代替`>`,`{lt}`代替`<`,`{neq}`代替`<>`,`{elt}`代替`<=`,`{egt}`代替`>=` |
|@page|當前分頁號,默認$page,當傳入該參數表示啟用分頁,一個頁面只允許有一個page,多個標簽使用多個page會造成不可預知的問題|
|@num|每次返回數據量|
|@cache|數據緩存時間,單位秒|
|@return|返回值變量名稱,默認data|
|@pagefun|分頁函數,默認page()|
|@pagetp|分頁模板|
|@table|表名,不用填寫表前綴,當存在`@table`參數時,忽略`@sql`參數|
|@order|排序參數,只有配合`@table`參數有效|
|@where|SQL的where部分條件,只有配合`@table`參數有效|
##普通SQL查詢示例
~~~
<get?sql="SELECT?*?FROM?shuipfcms_article??WHERE?status=99?ORDER?BY?inputtime?DESC"?page="$page"?num="5">
表前綴可以使用shuipfcms代替,系統會自動替換為你安裝時所設置的表前綴!
循環列表,默認返回數據是$data
<ul>
<volist?name="data"?id="vo">
????<li>標題:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分頁:{$pages}
</get>
~~~
##使用@table參數的查詢示例
~~~
<get?table="article"?status="99"?order="inputtime?DESC"?page="$page"?num="5">
循環列表,默認返回數據是$data
<ul>
<volist?name="data"?id="vo">
????<li>標題:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分頁:{$pages}
</get>
~~~
##比較復雜的示例
~~~
<?php
$sql?=?'SELECT?*?FROM?shuipfcms_article??WHERE?status=99?';
//接受外部數據
$_catid?=?I('get.classid',0,'intval');
if($_catid){
????$sql?.=?"?`catid`?=?'{$_catid}'?";
}
$sql?.=?'?ORDER?BY?inputtime?DESC';
?>
<get?sql="$sql"?page="$page"?num="5">
表前綴可以使用shuipfcms代替,系統會自動替換為你安裝時所設置的表前綴!
循環列表,默認返回數據是$data
<ul>
<volist?name="data"?id="vo">
????<li>標題:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分頁:{$pages}
</get>
~~~
##注意事項
>1.sql最好避免直接接受外部數據,會存在SQL注入風險!
2.請不要使用此標簽處理非SELECT類型的查詢語句!
3.page="$page" 存在,同樣是開啟分頁,一個頁面只允許一個標簽開啟使用,否則會出現不可預知的問題!
4.由于歷史原因,如果采用第一種直接傳入SQL,出現“`>`”,“`<`”這類,建議使用`{gt}`代替`>`,`{lt}`代替`<`,`{neq}`代替`<>`,`{elt}`代替`<=`,`{egt}`代替`>=`。