ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:19.69KB ,
资源ID:9790210      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9790210.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(kohana数据库查询器.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

kohana数据库查询器.docx

1、kohana数据库查询器Kohana 数据库查询器使用查询器方法无关数据库查询和数据操作。 用法首先实例化数据库类 /如果你的类继承自模型,$this-db 已经声明。/此列就不行了$this-db = new Database();/组建查询条件:$this-db-from(users);$this-db-select(username);$this-db-where(id,1);/上面的查询器相当于 SQL 语句:SELECT username FROM users WHERE id = 1执行 get(),insert(),update(),delete() 方法来查询结果: $resu

2、lt = $this-db-get();/上下两个结果 $result 返回的结果是一样的:$result = $this-db-query(SELECT username FROM users WHERE id = 1);所有的查询器方法返回的都是 Database 类,所以你可以使用串联方法: $result = $this-db-from(users)-select(username)-where(id,1)-get();局限性当数据库类的查询器部分非常强大和易于使用,但它的确有一些局限性。最主要的原因在于它会对输入项进行转义。因此下面的事情不会正常工作: 1. 数据库中的计算:$dbu

3、pdate(pages, array(views views+1)。由于会对输入值进行转义,所以它无法计算得出结果。2. 圆括号支持:比如 SELECT * FROM pages WHERE (id = 5) OR (title = “BLAH” AND id = 15) 不会正常工作,因为查询器没有能力识别圆括号。这个特性将会在未来的版本中解决。3. 任何数据库内置特殊函数:比如 MySQLs NOW() 汉化将会进行转义而不能正常工作。在未来的版本中将会有一个选项可以设置自动关闭查询转义功能。解决这个问题又两个关联的问题。这对原因导致我们目前无法支持: 如果查询器要支持服务器的无关数据库访

4、问。在你的查询器中加入 DB 指定函数声明会导致完全破坏掉这点。 对每个数据库服务器来说有太多的函数需要支持,而且对于还有检查所有功能的可用性。Kohana 专注于速度,所以有时必须进行取舍。 引用是必须为表/列明去发挥最大的灵活性。方法select()select() 方法可以选择查询你想要的表结构的名称。 $db = new Database();$db-select(id, title);/ 或者$db-select(array(id, title);这是查询选择表中的 id,title字段。注意查询器会自动为你转义列名。且如果你没有使用此方法的话,你的查询会自动设置为“SELECT *

5、”。你也可以进行多表查询: $db-select(users.id, pages.title);转换为 SQL 语句:SELECT users.id, pages.title 您还可以指定列别名: $db-select(id as page_id, title as page_title);转换为 SQL 语句:SELECT id AS page_id, title AS page_title 获取 DISTINCT data: $db-select(DISTINCT user) 转换为 SQL 语句: SELECT DISTINCT user from()from() 方法设置你想从哪个表选

6、择。你可以使用数组方式或者逗号分隔输入表名。 $db-from(pages);/ 或者$db-from(array(pages, users);转换为 SQL 就是:“FROM pages, users”。注意查询器会自动为你转义输入值。 你也可以指定表别名就像上面的 select() 方法。 where()where() 方法设置查询语句中的条件。通过传递列名和值完成一个条件,或者通过数组方式传递多个列明和值。系统会使用 AND 连接他们。 $db-where(id, 5);$db-where(array(id = 5);$db-where(array(id = 5, title = Dem

7、o);SQL 语句:WHERE id = 5 AND title = “Demo” where not$db-where(array(id != = $some_id);更多操作$db-where(array(id = = $some_id); $db-where(array(id $some_id); / . 等等is null$db-where(colname IS NULL);/ OR.$db-where(array(colname = null);orwhere()同上面的方法,与上面不同的的是,它使用的是 OR 连接。 $db-orwhere(array(id = 5, title

8、= Demo);SQL 语句:WHERE id = 5 OR title = “Demo” like()和 where() 方法相同,只不过把 WHERE 用 LIKE 替换: $db-like(title, Demo);SQL 语句:WHERE title LIKE ”%Demo%” 你也可以手动添加你想要的方式: $db-like(title, %Demo);$db-like(title, Demo%);当然,使用数组方式同样也可以实现。但数组之间使用的 AND 连接: $db-like(array(title = Demo, subtitle = Start);SQL 语句:WHERE

9、title LIKE ”%Demo%” AND subtitle LIKE ”%Start%” orlike()和 like() 方法相同,只不过它使用 OR 连接: $db-orlike(array(title = Demo, subtitle = Start);SQL 语句:WHERE title LIKE ”%Demo%” OR subtitle LIKE ”%Start%” notlike()和 like() 方法相同,但它是以 NOT LIKE 连接: $db-notlike(title = Demo); / SQL 语句:WHERE title NOT LIKE %Demo%$db

10、-notlike(array(title = Demo, subtitle = Start); / SQL 语句:WHERE title NOT LIKE %Demo% AND subtitle NOT LIKE %Start%ornotlike()和 like() 方法相同,但它是以 OR NOT LIKE 连接: $db-ornotlike(array(title = Demo, subtitle = Start); / SQL 语句:WHERE title NOT LIKE %Demo% OR subtitle NOT LIKE %Start%in()创建 IN 条件查询。它有三个参数:

11、 1. 匹配的列2. 一个数组或字符串值相比配3. (boolean),创建一个 NOT 从句代替$db-in(title, array(1,2,3,4,5);SQL 语句:title IN (1,2,3,4,5) notin()和 in() 方法相同,但它是以 NOT IN 从句代替。你也使用这个方法(两个参数)或者使用 in() 并设置第三个参数为 TRUE。 $db-notin(title, array(1,2,3,4,5);/ 或者$db-in(title, array(1,2,3,4,5), TRUE);SQL 语句:title NOT IN (1,2,3,4,5) regex()此

12、方法允许你使用正则表达式去搜索。其语法和 like() 方法相同。 $db-regex(title, Demo|Sample);$db-regex(array(title = Demo|Sample);orregex()和 regex() 方法相同,但它使用 OR 连接多个从句。 notregex()和 regex() 方法相同,但它使用 NOT REGEX 连接多个从句。 ornotregex()和 regex() 方法相同,但它使用 OR NOT REGEX 连接多个从句。 groupby()创建 GROUP BY 语句查询。你可以传递字符串或数组。 $db-groupby(title);

13、$db-groupby(array(title, id);having()创建 HAVING 语句查询。其语法和 like() 方法相同。 $db-having(title, Demo);orhaving()和 having() 方法相同。但它使用 OR 连接多个从句。 get()执行目前的查询器报表。它有三个参数: 1. 设置表名2. 设置 limit3. 如果设置位移,可以设置偏移量在执行此语句之后返回一个对象型的数据库结果。 $query = $db-from(pages)-where(array(id = = 5)-get();/ 等同于$query = $db-where(array

14、(id = = 5)-get(pages);getwhere()和上面方法相同,只不过它的参数为: 1. 设置表名2. 设置 where 条件3. 设置 limit4. 如果设置位移,可以设置偏移量那么,下面的例子和上面的还是相同的: $query = $db-getwhere(pages, array(id = = 5);set()为插入创建 SET 语句。你可以传递一个或两个参数: $db-set(column, value);/ 或者$db-set(array(column = value);merge()执行合并查询。此方法的行为会影响并改变正在使用的后端数据库。 在 MySQL 数据

15、库中,例如,数据库搜索一个存在的列,如果存在就删除此行,在插入新的一行。此语法类似于更新(update)。 insert()进行数据库插入查询。这个方法有两个参数 1. 一个是要插入的表2. 一个是要插入的关联列数组和他们的值$status = $db-insert(pages, array(title = My new title);/ 计算有多少行要插入$rows = count($status);返回一次查询结果(和你用“Database:query()”返回的对象是一样的) 如果您有在另一个查询器方法设置它的话,你也可以您也可以省略所有参数: $db-from(pages)-set(a

16、rray(title = My new title)-insert();update()执行数据库更新查询。它有三个参数: 1. 需要更新的表名。2. 关联数组的列和它们新值。3. WHERE语句的更新。既可以是字符串也可以是关联数组。详细请查询 where() 方法。$status = $db-update(pages, array(title = My new title), array(id = 5);/ 返回多少列更新的计数$rows = count($status);如果您用另一个查询器方法设置它的话,您也可以省略所有参数: $db-from(pages)-set(array(tit

17、le = My new title)-where(array(id = 5)-update();必须注意的是,上述方法只能用于在没有表前缀的情况下。如果有表前缀,例如prefix_pages,那么会出错,请使用下列方法之一 $db-set(array(title = My new title)-where(array(id = 5)-update(pages); / 将表名放到update语句里/ or$db-from(pages)-set(array(title = My new title)-where(array(id = 5)-update(pages); / from和update均

18、添加表名delete()执行删除数据库中的数据。它有2个参数: 1. 需要删除的表名。2. WHERE 语句的删除条件。这个既可以是字符串也可以是数组。详情请查看 where() 方法。$status = $db-delete(pages, array(id = 5);/ 返回删除列的计数$rows = count($status);您还可以设置表并用查询器的 insert() 方法和 update() 放在 WHERE 语句上面。 offset()创建查询的偏移量。这会导致记录开始在不同的起点。 / 设置开始偏移量为 10。$db-offset(10);limit()创建限制部分查询。第一个

19、参数你要查询限制的结果数量。 你也可以在这个方法设置偏移(offset)做第二个参数: / 限制查询 15 条记录$db-limit(15);/ 或者/ 从偏移量 10 开始限制查询 15 条记录$db-limit(15, 10);orderby()根据指定的查询进行结果排序。它有两个参数: 1. 排序的字段(也可以使用数组设置多个字段)2. 排序的方式(默认是 ASC)$db-orderby(title, ASC);你也可以使用下面针对 Mysql 数据的代码进行随机排序: $db-orderby(NULL, RAND();orderby() 方法也支持多字段排序,如果你设置的是数组形式。

20、$db-orderby( array( id = ASC, date_created = ASC) );join()连接两个表。 1. string - 要连接的表名2. string/array - where 键名或键名 值形式的数组3. string - where 值4. string - 连接类型 - LEFT,RIGHT,OUTER,INNER,LEFT OUTER,RIGHT OUTER/ 执行查询连接 user_roles 表$db-from(users_roles);/ 把 roles 连接到 user_roles$db-join(roles, roles.id, users

21、_roles.role_id);/ 执行查询$db-get();同样可以使用数组语法的 join: $this-db-join(roles, array(roles.id = users_roles.role_id);count_records()查询记录的计数值。 1. string - 表名2. array - where 语句/ 所有用户的计数值$count = $db-count_records(users);/ 禁止(banned)用户的计数值$banned_users_count = $db-count_records(users, array(banned = 1);/ 或者这样使用$banned_users_count = $db-where(banned, 1)-count_records(users);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1