前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Typecho数据库常用的API,创建/更新/读取/删除

Typecho数据库常用的API,创建/更新/读取/删除

作者头像
囍楽云
发布2022-12-29 14:16:49
7300
发布2022-12-29 14:16:49
举报
文章被收录于专栏:囍楽云博客囍楽云博客

数据库常用API,整理了数据库常用的API,实现基本的CURD操作。创建(Create)、更新(Update)、读取()和删除(Delete)

  表创建和删除

  在插件开发过程中,往往需要创建自己的表。类中的query函数,可用于执行所有sql语句,因此我们使用query()来进行表的创建、修改或者删除。

   $db= Typecho_Db::get();

代码语言:javascript
复制
    $prefix = $db->getPrefix();

  注意,使用query方式创建表的时候,需要在表明前手动添加$prefix前缀,否则在后面的使用过程中会造成困惑。

  还可以使用table.来代替$prefix,会自动识别并替换成指定的前缀。

  同理,修改或者删除数据库中表,按照同样的方式调用query即可。

  数据查询

  select,查询表数据

  select语句是可以说插件开发中最常用的sql调用。

   $db = Typecho_Db::get();

代码语言:javascript
复制
    $query= $db->select()->from('table.metas');
    $result = $db->fetchAll($query);
    <p>![][1]

  说明:

  中,.号具有特定的意义,这里table.metas表示这是一个metas表。实际上,是自动将table.的字符使用替换成了config.inc.php中设定的前缀。

  举例:

  $db->select()->from('table.metas');将生成SELECT * FROM WHERE (mid= '2' ),其中是表前缀;而$db->select()->from('metas');将生成SELECT * FROM metas WHERE (mid= '2' ),注意这里没有了表前缀。

  指定表字段查询

  有时为了提高查询性能,需要指定查询表中特定的几个字段,那么可以使用下面的方式:

   $query= $db->select('mid','name')->from('table.metas');

代码语言:javascript
复制
    echo $query; //SELECT `mid` , `name` FROM typecho_metas

  如果联合查询中,两个表存在相同的字段名,那么可以使用table.来指定表名:

   $query = $db->select('table.contents.cid')->from('table.contents')->join....

  指定查询条件

  指定SQL查询的where语句,是最常用的api调用。

   $query= $db->select('mid','name')->from('table.metas')->where('mid = ?', 2);

代码语言:javascript
复制
    echo $query; //SELECT * FROM typecho_metas WHERE (`mid` = '2' )

  如需要指定多个查询条件,直接多次调用where即可,将生成and关系的where条件

  $db->select('mid','name')->from('table.metas')->where('mid = ?', 2)->where('name like ? ', $name);

  使用OR关系的查询条件

  可以使用()函数来指定SQL查询的或条件。

   $db->select('mid','name')->from('table.metas')->where('mid = ?', 2)->orWhere('mid = ? ', 3);

  指定查询范围

  在需要分页的场景下,分页是必需的操作。offset()和limit()分别用于指定起始位置和结束位置,即指定查询范围。

   $query = $db->select('mid','name')->from('table.metas')->offset(2)->limit(3);

  中,还提供了一种简写的方法,见page()函数。

   $query = $db->select('mid','name')->from('table.metas')->page(3,10);

  //表示取第三页,并取10条记录。

  对查询结果进行排序

  在中,使用order()函数和::指定查询结果的排序方式。

   $query = $db->select('mid','name')->from('table.metas')->order('mid',Typecho_Db::SORT_DESC);

  Tips: :: 表示升序排序,::表示降序排序

  联合查询

  联合查询是SQL的常用语法,在中,同样使用内置函数join()方便地进行联合查询。

   $query = $db->select()

代码语言:javascript
复制
        ->from('table.contents')
        ->join('table.comments', 'table.contents.cid = table.comments.cid',Typecho_Db::LEFT_JOIN)
    <p>![][4]

        ->where('table.contents.type = ?', 'post');
    echo $query;

  update,更新表数据

  中,使用update()函数来进行更新表操作。但注意,update操作,需要借助于query执行。

   $update = $db->update('table.metas')->rows(array('name'=>'case_in_cn'))->where('mid=?',6);

代码语言:javascript
复制
    echo $update;//UPDATE typecho_metas SET `name` = 'some_name' WHERE (`mid`='6' )
    //执行后,返回收影响的行数。

  insert,插入数据

  中,使用insert()函数来进行表插入操作。同样,insert操作需要借助于query函数。

   $insert = $db->insert('table.metas')

代码语言:javascript
复制
        ->rows(array('mid' => '22', 'name' => 'hello world'));
    //将构建好的sql执行, 如果你的主键id是自增型的还会返回insert id
    <p>![][5]

  delete,删除数据

  中使用delete()函数来删除数据表中的行。delete操作用于删除数据表中指定的行,同样需要借助query函数执行。

   $delete = $db->delete('table.metas')

代码语言:javascript
复制
        ->where('mid = ?', 2);
    //将构建好的sql执行, 会自动返回已经删除的记录数

  数据库调试

  查看查询语句

  在调试过程中,打印sql语句往往是很有帮助的。对于大于5.2版本的php,直接echo $query即可,对于小于5.2版本,则需要显式调用()函数

   $select = $db->select()->from('table.metas');

代码语言:javascript
复制
    //如果版本大于php5.2
    echo $select;
    //如果小于php5.2
    echo $select->__toString();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档