当前位置:网站首页>[typecho]sql编写中的一些问题
[typecho]sql编写中的一些问题
2022-06-09 16:38:00 【djc8小码农】
前言
在typecho的插件编写中,有涉及到数据表的调用,但官网的文档只简单的说了些许调用规则,没有十分复杂的查询。 我这里将我最近用到的查询方式列出来。
表,列信息
|表名|列1|列2|列31| |----|----|----|----| |t1|id_str|text|is_delete| |t2|id_str|other_id_str|---|
简单的查询
$queryT=$db->select()->from('table.t1')
->where('table.t1.user_id_str=?','admin')
->order('table.t1.is_delete', Typecho_Db::SORT_DESC);
$current = $db->fetchAll($queryT);1.多表查询
多表查询,使用join方法进行连接:
$sql=$db->select('table.t1.*')->from('table.t1')
->join('table.t2', 'table.t1.id_str = table.t2.id_str',Typecho_Db::LEFT_JOIN)
->order('table.t1.is_delete', Typecho_Db::SORT_DESC);
$current = $db->fetchAll($sql);可以看到只是增加了join方法,并且指定是Typecho_Db::LETF_JOIN,也就是左连接,主表是t1
2.like条件
想来很多时候都需要用like做查询
$querySql=$this->db->select()->from('table.t1')
->where('table.t1.id_str=?','xxx')
->where("table.t1.text like ?",'%#daily%')
->order('table.TwitterTimeline.id_str',Typecho_Db::SORT_DESC)
->limit(1);
$links = $this->db->fetchObject($querySql);可以看到这一行->where("table.t1.text like ?)",'%#daily%'),将'%#daily%'作为like后面的条件。
3.or条件
当使用or的时候,要注意下性能方面的问题。
$querySql=$this->db->select()->from('table.t1')
->where('table.t1.id_str=?','xxx')
->orWhere("table.t1.text like ?",'%#daily%')
->order('table.TwitterTimeline.id_str',Typecho_Db::SORT_DESC)
->limit(1);
$links = $this->db->fetchObject($querySql);我这里将第二个例子改了下,使用orWhere,方法代替了。
4.and,or并用
在这种复杂的条件中,需要明确一点,就是你要并列的括号要一一对应。
$querySql=$this->db->select()->from('table.t1')
->where('table.t1.id_str=?','xxx')
->where("(table.t1.text like ?",'%#daily1%')
->orWhere("table.t1.text like ?)",'%#daily%')
->order('table.TwitterTimeline.id_str',Typecho_Db::SORT_DESC)
->limit(1);
$links = $this->db->fetchObject($querySql);这样,只要满足text中包含#daily1或者#daily的行,都会被查出来。
最后
在调试的过程中,最好直接将查询打印出来,就能明确有问题的语句。
边栏推荐
- 企业级服务端防重点思路
- 鸿蒙 TabList 配合Fraction 实现顶部切换效果
- 鸿蒙 HiLog日志打印使用技巧
- La seconde guerre mondiale a été piégée dans ces 4 points d'erreur, un an de plus pour rien!
- 干货|app自动化测试之设备交互API详解
- 这么多大学,考研人数大幅上涨!最高超70%!
- Cesium draw fence
- ArcGIS Pro optimization method
- JLINK RTT printing floating point numbers and negative numbers
- 浏览器指纹解读
猜你喜欢
随机推荐
Elk is not fragrant! I use grayog, which is much lighter
浏览器指纹解读
Cesium draw fence
论文阅读《Robust Odometry Estimation for RGB-D Cameras》
Under the epidemic situation, four points of cognition help you grow!
干货|app自动化测试之设备交互API详解
Ts编译配置
Kali intranet penetration shell
这么多大学,考研人数大幅上涨!最高超70%!
“喜新厌旧”的喜茶,该如何撑起600亿的估值?
华为云 | 企业数字化转型,安全要先行
UEditor图片跨域上传解决方案
Pyepics -- alarm: respond when a PV is out of range
A high-value open source knowledge management tool
leetcode:189. Rotation array
笔试题—华为机试~待续
Penetration test - post penetration +lcx+frp
代码。。。。
Word tutorial, how to change line spacing in word?
An openSUSE as a daily work system









