国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP開發(fā) Zend Framework數(shù)據庫操作方法實例總結

Zend Framework數(shù)據庫操作方法實例總結

Jan 05, 2017 am 09:31 AM

本文實例講述了Zend Framework數(shù)據庫操作方法。分享給大家供大家參考,具體如下:

示例:

<?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);
// ...或者使用一種連續(xù)定義的方式:
$select->from(&#39;round_table&#39;, &#39;*&#39;)
->where(&#39;noble_title = ?&#39;, &#39;Sir&#39;)
->order(&#39;first_name&#39;)
->limit(10,20);
// 但是,讀取數(shù)據的方法相同
$sql = $select->__toString();
$result = $db->fetchAll($sql);
// 對于以上任一種方式,你都可以傳送$select對象本身
// 使用Zend_Db_Select對象的 __toString()方法就可以得到查詢語句
$result = $db->fetchAll($select);
?>

你也可以在你的查詢語句中使用綁定的參數(shù),而不需要自己為參數(shù)加引號。

<?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);
// 讀取結果使用綁定的參數(shù)
$params = array(&#39;title&#39; => &#39;Sir&#39;);
$result = $db->fetchAll($select, $params);
?>

同一表中查詢多列數(shù)據

當需要從某一個指定的表查詢某幾列時,可以使用from()方法,將需要 查詢的表名和列名都在該方法中指定。表名和列名都可以通過別名代替 ,而且也可以根據需要多次使用from()方法。

<?php
// 創(chuàng)建一個$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;);
?>

多表聯(lián)合查詢

當需要進行表聯(lián)合查詢時,可以使用join()方法。首先,設定進行表 聯(lián)合查詢的表名,然后是表聯(lián)合的條件(ares注:該條件是針對多表 內部連接的條件),最后是查詢的列名。同樣,你可以根據需要多次 使用join()方法。

<?php
// 創(chuàng)建一個$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
// 創(chuàng)建一個$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()方法給查詢到的數(shù)據進行分組

<?php
// 創(chuàng)建一個$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的條件會“并”在一起進行操作; 假如你需要實現(xiàn)“或 ”操作,可以使用orHaving()方法 。

<?php
// 創(chuàng)建一個$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()方法給查詢到的數(shù)據進行排序

<?php
// 創(chuàng)建一個$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;));
?>

通過總數(shù)和偏移量進行LIMIT限制

Zend_db_select可以支持數(shù)據庫層的limit語句限制。對于一些數(shù)據庫,例如mysql 和postgresql,實現(xiàn)這些是相對容易的,因為這些數(shù)據庫本身就支持“l(fā)imit:count” 語法。

對于其他一些數(shù)據庫來說,例如微軟的sqlserver和oracle,要實現(xiàn)limit功能 就不那么簡單了,因為他們本身就根本不支持limit語句。MS-SQL有一個top語 句來實現(xiàn),而oracle要實現(xiàn)limit功能,查詢語句的寫法就更特殊一些。由于 zend_db_select內在地工作的方式,我們可以重寫select語句以在oracle中 實現(xiàn)上述開源數(shù)據庫系統(tǒng)的limit功能。

要通過設定查詢的總數(shù)和偏移量對返回的結果進行限制,可以使用limit()方法, 總數(shù)值和一個可選的偏移量作為調用該方法的參數(shù)。

<?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
//
//
// 現(xiàn)在, 是更復雜的 "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語句的動態(tài)創(chuàng)建.
//
?>

通過頁數(shù)和總數(shù)進行LIMIT限制

Zend_db_select同樣也提供了翻頁的limit功能。假如你想要從結果中找到 特定“頁數(shù)”的結果,使用limitPage()方法;將你需要的頁數(shù)值和每頁顯示 的數(shù)據值數(shù)作為參數(shù)傳過去即可。

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

希望本文所述對大家基于Zend Framework框架的PHP程序設計有所幫助。

更多Zend Framework數(shù)據庫操作方法實例總結相關文章請關注PHP中文網!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276