王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

Typecho数据库经常使用API

表建立和删除

在Typecho插件开发过程当中,每每须要建立本身的表。上文提到Typecho_Db类中的query函数,可用于实行一切sql语句,因而我们运用query()来举行表的建立、修正或许删除。

$db= Typecho_Db::get();$prefix = $db->getPrefix();$db->query('create table '.$prefix.'metas xxxxx');

注重,运用query体式格局建立表的时刻,须要在表明前手动增加$prefix前缀,不然在后面的运用过程当中会形成疑心。
还能够运用table.来替代$prefixtypecho会自动识别并替代成指定的前缀。

同理,修正或许删除Typecho数据库中表,根据一样的体式格局挪用query即可。

数据查询

select,查询表数据
select语句是能够说Typecho插件开发中最经常使用sql挪用。

$db = Typecho_Db::get();$query= $db->select()->from('table.metas');$result = $db->fetchAll($query);

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

举例:
a. $db->select()->from('table.metas');将生成SELECT * FROM typecho_metas WHERE (mid= '2' ),个中typecho_是表前缀;
b. 而$db->select()->from('metas');将生成SELECT * FROM metas WHERE (mid= '2' ),注重这里没有了表前缀。

指定表字段查询
偶然为了进步查询机能,须要指定查询表中特定的几个字段,那末能够运用下面的体式格局:

$query= $db->select('mid','name')->from('table.metas'); 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); 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关联的查询前提
能够运用orWhere()函数来指定SQL查询的或前提。

$db->select('mid','name')->from('table.metas')->where('mid = ?', 2)->orWhere('mid = ? ', 3);//SELECT `mid` , `name` FROM typecho_metas WHERE (`mid` = '2' ) OR (`mid` = '3' )

指定查询局限
在须要分页的场景下,分页是必须的操纵。offset()limit()离别用于指定肇端位置和完毕位置,即指定查询局限。

$query = $db->select('mid','name')->from('table.metas')->offset(2)->limit(3);echo $query;//SELECT `mid` , `name` FROM typecho_metas LIMIT 3 OFFSET 2

Typecho中,还供应了一种简写的要领,见page()函数。

$query = $db->select('mid','name')->from('table.metas')->page(3,10);echo $query;//SELECT `mid` , `name` FROM typecho_metas LIMIT 10 OFFSET 20//示意取第三页,并取10条纪录。

对查询效果举行排序
Typecho中,运用order()函数和Typecho_Db::SORT_DESC指定查询效果的排序体式格局。

$query = $db->select('mid','name')->from('table.metas')->order('mid',Typecho_Db::SORT_DESC);echo $query;//SELECT `mid` , `name` FROM typecho_metas ORDER BY `mid` DESCTips: Typecho_Db::SORT_ASC 示意升序排序,Typecho_Db::SORT_DESC示意降序排序

团结查询

团结查询是SQL的经常使用语法,在Typecho中,一样运用内置函数join()方便地举行团结查询。

$query = $db->select()    ->from('table.contents')    ->join('table.comments', 'table.contents.cid = table.comments.cid',Typecho_Db::LEFT_JOIN)    ->where('table.contents.type = ?', 'post');echo $query;//SELECT * FROM typechocontents LEFT JOIN typecho_comments ON typecho_contents.`cid` = typecho_comments.`cid` WHERE (typecho_contents.`type` = 'post' )

1. update,更新表数据
Typecho中,运用update()函数来举行更新表操纵。但注重,update操纵,须要借助于query实行。

$update = $db->update('table.metas')->rows(array('name'=>'case_in_cn'))->where('mid=?',6);echo $update;//UPDATE typecho_metas SET `name` = 'some_name' WHERE (`mid`='6' )//实行后,返接纳影响的行数。$updateRows= $db->query($update);

2. insert,插进去数据
Typecho中,运用insert()函数来举行表插进去操纵。一样,insert操纵须要借助于query函数。

$insert = $db->insert('table.metas')    ->rows(array('mid' => '22', 'name' => 'hello world'));//将构建好的sql实行, 假如你的主键id是自增型的还会返回insert id$insertId = $db->query($insert);

3. delete,删除数据
Typecho中运用delete()函数来删除数据表中的行。delete操纵用于删除数据表中指定的行,一样须要借助query函数实行。

$delete = $db->delete('table.metas')    ->where('mid = ?', 2);//将构建好的sql实行, 会自动返回已删除的纪录数$deletedRows = $db->query($delete);

数据库调试

检察查询语句
Typecho调试过程当中,打印sql语句每每是很有协助的。关于大于5.2版本的php,直接echo $query即可,关于小于5.2版本,则须要显式挪用__toString()函数

$select = $db->select()->from('table.metas');//假如版本大于php5.2echo $select;//假如小于php5.2echo $select->__toString();

声明

文章转自:https://www.typechodev.com/dev/17.html

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。