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

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

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

Jan 05, 2017 am 09:31 AM

本文實(shí)例講述了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);
// 對(duì)于以上任一種方式,你都可以傳送$select對(duì)象本身
// 使用Zend_Db_Select對(duì)象的 __toString()方法就可以得到查詢語句
$result = $db->fetchAll($select);
?>

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

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

<?php
// 創(chuàng)建一個(gè)$db對(duì)象,假定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兩個(gè)表中讀取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)合查詢時(shí),可以使用join()方法。首先,設(shè)定進(jìn)行表 聯(lián)合查詢的表名,然後是表聯(lián)合的條件(ares註:該條件是針對(duì)多表 內(nèi)部連接的條件),最後是查詢的列名。同樣,你可以根據(jù)需要多次 使用join()方法。

<?php
// 創(chuàng)建一個(gè)$db對(duì)象,假定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條件時(shí),可以使用where()方法。你可以傳送一個(gè) 普通的查詢語句字串,也可以傳送一個(gè)使用?

<?php
// 創(chuàng)建一個(gè)$db對(duì)象,調(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)建一個(gè)$db對(duì)象,調(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條件時(shí),可以使用having()方法。 這種方法與where()方法的功能一樣。

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

<?php
// 創(chuàng)建一個(gè)$db對(duì)象,調(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)建一個(gè)$db對(duì)象,調(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語句限制。對(duì)於某些資料庫,例如mysql 和postgresql,實(shí)作這些是相對(duì)容易的,因?yàn)檫@些資料庫本身就支援「limit:count」 語法。

對(duì)於其他一些資??料庫來說,例如微軟的sqlserver和oracle,要實(shí)作limit功能 就不那麼簡(jiǎn)單了,因?yàn)樗麄儽旧砭透静恢г甽imit語句。 MS-SQL有一個(gè)top語 句來實(shí)現(xiàn),而oracle要實(shí)作limit功能,查詢語句的寫法就更特別一些。由於 zend_db_select內(nèi)在地運(yùn)作的方式,我們可以重寫select語句以在oracle中 實(shí)作上述開源資料庫系統(tǒng)的limit功能。

要透過設(shè)定查詢的總數(shù)和偏移量對(duì)傳回的結(jié)果進(jìn)行限制,可以使用limit()方法, 總數(shù)值和一個(gè)可選的偏移量作為呼叫該方法的參數(shù)。

<?php
// 首先,一個(gè)簡(jiǎn)單的 "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 可以自動(dòng)的完成sql語句的動(dòng)態(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
//
?>

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

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版

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