亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 php教程 PHP開發(fā) Zend Framework資料庫操作方法實例總結(jié)

Zend Framework資料庫操作方法實例總結(jié)

Jan 05, 2017 am 09:31 AM

本文實例講述了Zend Framework資料庫操作方法。分享給大家供大家參考,具體如下:

範(fàn)例:

<?php
//
// SELECT *
//   FROM round_table
//   WHERE noble_title = "Sir"
//   ORDER BY first_name
//   LIMIT 10 OFFSET 20
//
// 你可以使用一種重復(fù)定義的方式...
$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ù)據(jù)的方法相同
$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);
// 讀取結(jié)果使用綁定的參數(shù)
$params = array(&#39;title&#39; => &#39;Sir&#39;);
$result = $db->fetchAll($select, $params);
?>

同一表中查詢多列資料

當(dāng)需要從某一個指定的表查詢某幾列時,可以使用from()方法,將需要 查詢的表名和列名都在該方法中指定。表名和列名都可以用別名代替 ,而且也可以根據(jù)需要多次使用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)合查詢

當(dāng)需要進(jìn)行表格聯(lián)合查詢時,可以使用join()方法。首先,設(shè)定進(jìn)行表 聯(lián)合查詢的表名,然後是表聯(lián)合的條件(ares註:該條件是針對多表 內(nèi)部連接的條件),最後是查詢的列名。同樣,你可以根據(jù)需要多次 使用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條件

當(dāng)需要增加where條件時,可以使用where()方法。你可以傳送一個 普通的查詢語句字串,也可以傳送一個使用?

<?php
// 創(chuàng)建一個$db對象,調(diào)用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分句

根據(jù)需要,可以多次使用group()方法將查詢到的資料分組

<?php
// 創(chuàng)建一個$db對象,調(diào)用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;);
// 同樣可以這樣調(diào)用 group() 方法:
$select->group(&#39;bar, baz&#39;);
// 還可以:
$select->group(array(&#39;bar&#39;, &#39;baz&#39;));
?>

HAVING 條件

當(dāng)需要在查詢結(jié)果中加入having條件時,可以使用having()方法。 這種方法與where()方法的功能一樣。

當(dāng)你多次呼叫having()方法時,各個having的條件會「並」在一起進(jìn)行操作;假如你需要實現(xiàn)「或 」操作,可以使用orHaving()方法 。

<?php
// 創(chuàng)建一個$db對象,調(diào)用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 分句

根據(jù)需要,可以多次使用order()方法給查詢到的資料進(jìn)行排序

<?php
// 創(chuàng)建一個$db對象,調(diào)用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;);
// 同樣可以這樣調(diào)用 order() 方法:
$select->order(&#39;noble_title DESC, first_name&#39;);
// 還可以:
$select->order(array(&#39;noble_title DESC&#39;, &#39;first_name&#39;));
?>

透過總數(shù)和偏移量進(jìn)行LIMIT限制

Zend_db_select可以支援資料庫層的limit語句限制。對於某些資料庫,例如mysql 和postgresql,實作這些是相對容易的,因為這些資料庫本身就支援「limit:count」 語法。

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

要透過設(shè)定查詢的總數(shù)和偏移量對傳回的結(jié)果進(jìn)行限制,可以使用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)在, 是更復(fù)雜的 "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ù)進(jìn)行LIMIT限制

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

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

希望本文所述對大家基於Zend Framework框架的PHP程式設(shè)計有所幫助。

更多Zend Framework資料庫操作方法實例總結(jié)相關(guān)文章請關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(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

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72