dedecms模板标签中的sql及like模糊查询使用

阅读: 评论:0

dedecms模板标签中的sql及like模糊查询使用

dedecms模板标签中的sql及like模糊查询使用

在dedecms中我们常会用到{dede:sql},在sql使用变量经常也会用到。比如我们要在dede_archives表中搜索作者为指定变量的记录,如变量为$writer,那么语句如下:
 
{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"} 
 
这种是比较简单和常用的方式。但在使用过程中我发现,有时会遇到这样一种状况,即模糊搜索匹配的标题(sql使用like和%)。
 
按照上面来说应该这样写:
{dede:sql sql="SELECT * FROM `dede_archives` WHERE `title` like '%~title~%' "}
但是这样报错了,编译的结果是select * from dede_archives where title like '%'$title'% 造成sql语句错误。多出来了' 号。后来发现是sql语句的规则问题,所以就要修改{sql.lib.php} 的标签。
 
以下为修改方法:
 
1. 复制include/taglib/sql.lib.php文件并重命名为likesql.lib.php
 
2. 将32行中
function lib_sql(&$ctag,&$refObj)
修改为
function lib_likesql(&$ctag,&$refObj)
 
3. 将48行中
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
修改为
$sql = str_replace($conditions[0][$key],addslashes($refObj->Fields[$value]), $sql);

 

修改完成后调用标签改为

 

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

 

 

 

本文发布于:2024-02-03 02:51:36,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170689989448165.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模糊   模板   标签   dedecms   sql
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23