一区二区三区高清不卡视频-99|亚洲 日韩 欧美 一区 成人|一本久久道亚洲综合|国产高清无码入口|午夜亚洲视频国产|国产亚洲午夜嘿嘿视频|97人妻一区二区三区免费九一视频|久久精品一区99|久久久精品久久久欧美俄罗乱妇|玖玖中文字幕AV

歡迎訪問(wèn)士人網(wǎng)絡(luò)天水網(wǎng)站建設(shè)專業(yè)服務(wù)平臺(tái) 網(wǎng)站地圖 | 聯(lián)系我們
天水網(wǎng)站建設(shè)制作設(shè)計(jì)公司【天水士人網(wǎng)絡(luò)】

dedecms系統(tǒng)內(nèi)容頁(yè)使用sql標(biāo)簽查詢調(diào)用條件語(yǔ)句是變量字段的方法

時(shí)間:2018-05-22 | 來(lái)源:士人網(wǎng)絡(luò) | 關(guān)注: 335

dedecms系統(tǒng)內(nèi)容頁(yè)使用sql標(biāo)簽查詢調(diào)用條件語(yǔ)句是變量字段的方法

  在dedecms中我們常會(huì)用到{dede:sql},在sql使用變量經(jīng)常也會(huì)用到。比如我們要在dede_archives表中查詢某個(gè)關(guān)鍵詞與當(dāng)前標(biāo)題做匹配的時(shí)候,如變量為title,那么語(yǔ)句如下:

  {dede:sql sql="SELECT * FROM dede_archives WHERE tag=~title~"}

  這種是比較簡(jiǎn)單和常用的方式。但在使用過(guò)程中我發(fā)現(xiàn),有時(shí)會(huì)遇到這樣一種狀況,即模糊搜索匹配的標(biāo)題(sql使用like和%)。

  按照上面來(lái)說(shuō)應(yīng)該這樣寫(xiě):

  {dede:sql sql="SELECT * FROM dede_archives WHERE title like '%~title~%' "}

  但是這樣報(bào)錯(cuò)了,編譯的結(jié)果是select * from dede_archives where title like '%'$title'% 造成sql語(yǔ)句錯(cuò)誤。多出來(lái)了' 號(hào)。后來(lái)發(fā)現(xiàn)是sql語(yǔ)句的規(guī)則問(wèn)題,所以就要修改{sql.lib.php} 的標(biāo)簽。

  以下為修改方法:

  1. 復(fù)制include/taglib/sql.lib.php文件并重命名為likesql.lib.php ( likesql 這個(gè)文件名字可以自己取)

  2. 將32行中

  function lib_sql(&$ctag,&$refObj)

  修改為

  function lib_likesql(&$ctag,&$refObj) (lib_likesql 這個(gè)方法名字也可以自己取)

  3. 將48行中

  $sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);

  修改為:

  $sql = str_replace($conditions[0][$key],addslashes($refObj->Fields[$value]), $sql);

  修改完成后把該文件上傳到 include/taglib/ 目錄下面即可。

  最后的調(diào)用標(biāo)簽改為:{dede:likesql sql="" }

  {dede:likesql sql="SELECT * FROM `dede_archives` WHERE `title` like '%~title~%' "}

  進(jìn)階實(shí)際應(yīng)用:

  查詢附加表某個(gè)字段匹配當(dāng)前這個(gè)字段(變量)的其它文檔列表,可以這樣編寫(xiě)代碼
 

相關(guān)熱詞搜索: dedecms,內(nèi)容頁(yè),sql標(biāo)簽,條件語(yǔ)句,變量,字段,方