搜索
首页php教程PHP开发Zend Framework数据库操作方法实例总结

本文实例讲述了Zend Framework数据库操作方法。分享给大家供大家参考,具体如下:

示例:

<?php
//
// SELECT *
//   FROM round_table
//   WHERE noble_title = "Sir"
//   ORDER BY first_name
//   LIMIT 10 OFFSET 20
//
// 你可以使用一种重复定义的方式...
$select->from(&#39;round_table&#39;, &#39;*&#39;);
$select->where(&#39;noble_title = ?&#39;, &#39;Sir&#39;);
$select->order(&#39;first_name&#39;);
$select->limit(10,20);
// ...或者使用一种连续定义的方式:
$select->from(&#39;round_table&#39;, &#39;*&#39;)
->where(&#39;noble_title = ?&#39;, &#39;Sir&#39;)
->order(&#39;first_name&#39;)
->limit(10,20);
// 但是,读取数据的方法相同
$sql = $select->__toString();
$result = $db->fetchAll($sql);
// 对于以上任一种方式,你都可以传送$select对象本身
// 使用Zend_Db_Select对象的 __toString()方法就可以得到查询语句
$result = $db->fetchAll($select);
?>

你也可以在你的查询语句中使用绑定的参数,而不需要自己为参数加引号。

<?php
//
// SELECT *
//   FROM round_table
//   WHERE noble_title = "Sir"
//   ORDER BY first_name
//   LIMIT 10 OFFSET 20
//
$select->from(&#39;round_table&#39;, &#39;*&#39;)
  ->where(&#39;noble_title = :title&#39;)
  ->order(&#39;first_name&#39;)
  ->limit(10,20);
// 读取结果使用绑定的参数
$params = array(&#39;title&#39; => &#39;Sir&#39;);
$result = $db->fetchAll($select, $params);
?>

同一表中查询多列数据

当需要从某一个指定的表查询某几列时,可以使用from()方法,将需要 查询的表名和列名都在该方法中指定。表名和列名都可以通过别名代替 ,而且也可以根据需要多次使用from()方法。

<?php
// 创建一个$db对象,假定adapter为Mysql
$select = $db->select();
// 从some_table表中读取a,b,c三列
$select->from(&#39;some_table&#39;, &#39;a, b, c&#39;);
// 同样可以:
$select->from(&#39;some_table&#39;, array(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;);
// 从foo AS bar表中读取列bar.col
$select->from(&#39;foo AS bar&#39;, &#39;bar.col&#39;);
// 从foo, bar两个表中读取foo.col 别名为col1,bar.col别名为col2
$select->from(&#39;foo&#39;, &#39;foo.col AS col1&#39;);
$select->from(&#39;bar&#39;, &#39;bar.col AS col2&#39;);
?>

多表联合查询

当需要进行表联合查询时,可以使用join()方法。首先,设定进行表 联合查询的表名,然后是表联合的条件(ares注:该条件是针对多表 内部连接的条件),最后是查询的列名。同样,你可以根据需要多次 使用join()方法。

<?php
// 创建一个$db对象,假定adapter为Mysql.
$select = $db->select();
//
// SELECT foo.*, bar.*
//   FROM foo
//   JOIN bar ON foo.id = bar.id
//
$select->from(&#39;foo&#39;, &#39;*&#39;);
$select->join(&#39;bar&#39;, &#39;foo.id = bar.id&#39;, &#39;*&#39;);
?>

WHERE条件

当需要要增加where条件时,可以使用where()方法。你可以传送一个 普通的查询语句字符串,也可以传送一个使用?

<?php
// 创建一个$db对象,调用SELECT方法.
$select = $db->select();
//
// SELECT *
//   FROM round_table
//   WHERE noble_title = "Sir"
//   AND favorite_color = "yellow"
//
$select->from(&#39;round_table&#39;, &#39;*&#39;);
$select->where(&#39;noble_title = "Sir"&#39;); // embedded value
$select->where(&#39;favorite_color = ?&#39;, &#39;yellow&#39;); // quoted value
//
// SELECT *
//   FROM foo
//   WHERE bar = "baz"
//   OR id IN("1", "2", "3")
//
$select->from(&#39;foo&#39;, &#39;*&#39;);
$select->where(&#39;bar = ?&#39;, &#39;baz&#39;);
$select->orWhere(&#39;id IN(?)&#39;, array(1, 2, 3);
?>

GROUP BY分句

根据需要,可以多次使用group()方法给查询到的数据进行分组

<?php
// 创建一个$db对象,调用SELECT方法.
$select = $db->select();
//
// SELECT COUNT(id)
//   FROM foo
//   GROUP BY bar, baz
//
$select->from(&#39;foo&#39;, &#39;COUNT(id)&#39;);
$select->group(&#39;bar&#39;);
$select->group(&#39;baz&#39;);
// 同样可以这样调用 group() 方法:
$select->group(&#39;bar, baz&#39;);
// 还可以:
$select->group(array(&#39;bar&#39;, &#39;baz&#39;));
?>

HAVING 条件

当需要在查询结果中加入having条件时,可以使用having()方法。 这种方法与where()方法的功能一样。

当你多次调用having()方法时,各个having的条件会“并”在一起进行操作; 假如你需要实现“或 ”操作,可以使用orHaving()方法 。

<?php
// 创建一个$db对象,调用SELECT方法.
$select = $db->select();
//
// SELECT COUNT(id) AS count_id
//   FROM foo
//   GROUP BY bar, baz
//   HAVING count_id > "1"
//
$select->from(&#39;foo&#39;, &#39;COUNT(id) AS count_id&#39;);
$select->group(&#39;bar, baz&#39;);
$select->having(&#39;count_id > ?&#39;, 1);
?>

ORDER BY 分句

根据需要,可以多次使用order()方法给查询到的数据进行排序

<?php
// 创建一个$db对象,调用SELECT方法.
$select = $db->select();
//
// SELECT * FROM round_table
//   ORDER BY noble_title DESC, first_name ASC
//
$select->from(&#39;round_table&#39;, &#39;*&#39;);
$select->order(&#39;noble_title DESC&#39;);
$select->order(&#39;first_name&#39;);
// 同样可以这样调用 order() 方法:
$select->order(&#39;noble_title DESC, first_name&#39;);
// 还可以:
$select->order(array(&#39;noble_title DESC&#39;, &#39;first_name&#39;));
?>

通过总数和偏移量进行LIMIT限制

Zend_db_select可以支持数据库层的limit语句限制。对于一些数据库,例如mysql 和postgresql,实现这些是相对容易的,因为这些数据库本身就支持“limit:count” 语法。

对于其他一些数据库来说,例如微软的sqlserver和oracle,要实现limit功能 就不那么简单了,因为他们本身就根本不支持limit语句。MS-SQL有一个top语 句来实现,而oracle要实现limit功能,查询语句的写法就更特殊一些。由于 zend_db_select内在地工作的方式,我们可以重写select语句以在oracle中 实现上述开源数据库系统的limit功能。

要通过设定查询的总数和偏移量对返回的结果进行限制,可以使用limit()方法, 总数值和一个可选的偏移量作为调用该方法的参数。

<?php
// 首先,一个简单的 "LIMIT :count"
$select = $db->select();
$select->from(&#39;foo&#39;, &#39;*&#39;);
$select->order(&#39;id&#39;);
$select->limit(10);
//
// 在mysql/psotgreSql/SQLite,可以得到这样的语句:
//
// SELECT * FROM foo
//   ORDER BY id ASC
//   LIMIT 10
//
// 但是在Microsoft SQL下,可以得到这样的语句:
//
// SELECT TOP 10 * FROM FOO
//   ORDER BY id ASC
//
//
// 现在, 是更复杂的 "LIMIT :count OFFSET :offset"方法
$select = $db->select();
$select->from(&#39;foo&#39;, &#39;*&#39;);
$select->order(&#39;id&#39;);
$select->limit(10, 20);
//
// 在mysql/psotgreSql/SQLite,可以得到这样的语句:
//
// SELECT * FROM foo
//   ORDER BY id ASC
//   LIMIT 10 OFFSET 20
//
// 但是在Microsoft SQL下,由于不支持偏移量功能,可以得到这样sql语句:
//
// SELECT * FROM (
//   SELECT TOP 10 * FROM (
//     SELECT TOP 30 * FROM foo ORDER BY id DESC
//   ) ORDER BY id ASC
// )
//
// Zend_Db_Adapter 可以自动的完成sql语句的动态创建.
//
?>

通过页数和总数进行LIMIT限制

Zend_db_select同样也提供了翻页的limit功能。假如你想要从结果中找到 特定“页数”的结果,使用limitPage()方法;将你需要的页数值和每页显示 的数据值数作为参数传过去即可。

<?php
// 构造基础的select方法:
$select = $db->select();
$select->from(&#39;foo&#39;, &#39;*&#39;);
$select->order(&#39;id&#39;);
// ... 限制到第三页,每页包括10行数据
$select->limitPage(3, 10);
//
// 在MySQL/PostgreSQL/SQLite下, 可以得到:
//
// SELECT * FROM foo
//   ORDER BY id ASC
//   LIMIT 10 OFFSET 20
//
?>

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

更多Zend Framework数据库操作方法实例总结相关文章请关注PHP中文网!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具