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

首頁 php教程 PHP開發(fā) Zend Framework教學之Zend_Db_Table用法詳解

Zend Framework教學之Zend_Db_Table用法詳解

Jan 05, 2017 am 09:54 AM

本文實例講述了Zend_Db_Table用法。分享給大家供大家參考,具體如下:

1. 簡介

Zend_Db_Table 是Zend Framework的表模組.它透過zend_db_adapter連接到資料庫,為資料庫模式檢查表物件,並對該表進行操作和查詢.

2. 開始

首先需要為抽象類別zend_db_table(ares註:該類別為抽象類別,所以不能直接實例化,只能先繼承該類別,然後實例化子類別)設定一個預設對資料庫adapter;除非你指定其他類型資料庫adapter,否則,所有的zend_db_table類別實例都會使用預設adapter.

<?php
// 建立一個 adapter
require_once &#39;Zend/Db.php&#39;;
$params = array (
  &#39;host&#39;   => &#39;127.0.0.1&#39;,
  &#39;username&#39; => &#39;malory&#39;,
  &#39;password&#39; => &#39;******&#39;,
  &#39;dbname&#39;  => &#39;camelot&#39;
);
$db = Zend_Db::factory(&#39;PDO_MYSQL&#39;, $params);
// 為所有的Zend_Db_Table對象設定默認的adapter
require_once &#39;Zend/Db/Table.php&#39;;
Zend_Db_Table::setDefaultAdapter($db);
?>

接下來,我們假定資料庫中存在一個名為」round_table」的表.要對該表使用zend_db_table,只需繼承zend_db_table類建立一個名為RoundTable的新類別.然後我就可以透過該類別在資料庫中的round_table表中檢查,操作資料行並且取得資料結果.

<?php
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
?>

3. 表名和主鍵

預設情況下,zend_db_table類別會將其類別名稱當作資料庫中表名(大小寫不同的地方需要新增"_").例如,一個名為SomeTableName的zend_db_table類別在資料庫中就對應表」some_table_name”.假如不希望將類別名稱與資料庫表名以這種添加下劃線的形式進行對應,可以在定義該類時對$_name進行重構.

<?php
class ClassName extends Zend_Db_Table
{
  // 默認表名為 &#39;class_name&#39;
  // 但是我們也可以對應其它表
  protected $_name = &#39;another_table_name&#39;;
}
?>

zend_db_table類默認字段”id”為表的主鍵(該字段最好為自增的,但並不是必須的).假如該表的主鍵並不是名為”$id”,你可以在定義表實體類時對$_primary進行重構

<?php
class ClassName extends Zend_Db_Table
{
  // 默認主鍵為&#39;id&#39;
  // 但我們也可以設定其他列名為主鍵
  protected $_primary = &#39;another_column_name&#39;;
}
?>

你也可以通過表實體類中_setup()方法設定這些變數(shù);但是需要確保在修改後再執(zhí)行一次parent::_setup()方法.

<?php
class ClassName extends Zend_Db_Table
{
  protected function _setup()
  {
    $this->_name = &#39;another_table_name&#39;;
    $this->_primary = &#39;another_column_name&#39;;
    parent::_setup();
  }
}
?>

4. 插入資料

要在表中插入一行新資料,只需要將列名:資料的關聯(lián)數(shù)組作為參數(shù),呼叫insert()方法即可.

(zend framework)會自動對資料進行加引號處理, 並傳回插入的最後一行的id值
(注意:這裡不同於zend_db_adapter::insert方法,後者傳回的是插入的行數(shù)).

<?php
//
// INSERT INTO round_table
//   (noble_title, first_name, favorite_color)
//   VALUES ("King", "Arthur", "blue")
//
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
$data = array(
  &#39;noble_title&#39; => &#39;King&#39;,
  &#39;first_name&#39; => &#39;Arthur&#39;,
  &#39;favorite_color&#39; => &#39;blue&#39;,
)
$id = $table->insert($data);
?>

5. 更新資料

要修改表中的任意行資料,我們可以設定一個列名:資料的關聯(lián)數(shù)組作為參數(shù),調用update()方法,同是透過一個where條件子句來決定需要改變的行.該方法將會修改表中資料並傳回被修改的行數(shù).

(Zend frameword)將會自動對修改對資料進行加引號處理,但是這種檢查不包含條件分句,所以你需要使用該表的zend_db_adapter物件完成該工作.?

class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
$db = $table->getAdapter();
$set = array(
  &#39;favorite_color&#39; => &#39;yellow&#39;,
)
$where = $db->quoteInto(&#39;first_name = ?&#39;, &#39;Robin&#39;);
$rows_affected = $table->update($set, $where);

6. Deleting Rows

要刪除表中的資料,我們可以調用delete()方法,同時透過一個where條件分句來決定需要刪除的行.該方法將會傳回被刪除的行數(shù).

(zend framework)不會對條件分句進行加引號處理,所以你需要使用該表的zend_db_adapter對象完成該工作

<?php
//
// DELETE FROM round_table
//   WHERE first_name = "Patsy"
//
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
$db = $table->getAdapter();
$where = $db->quoteInto(&#39;first_name = ?&#39;, &#39;Patsy&#39;);
$rows_affected = $table->delete($where);
?>

7. 根據(jù)主鍵查找資料

透過呼叫find()方法,可以使用主鍵值輕鬆地在表中檢索資料.假如你只想要查詢某一條資料,該方法將回傳一個zend_db_table_row物件,當你想要查詢多筆記錄時,將會回傳一個zend_db_table_rowset物件.

<?php
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
// SELECT * FROM round_table WHERE id = "1"
$row = $table->find(1);
// SELECT * FROM round_table WHERE id IN("1", "2", 3")
$rowset = $table->find(array(1, 2, 3));
?>

8. 取回一條記錄

雖然透過主鍵找到對應資料行是很便利的事情,但是在更多的時候,我們是透過其他一些非主鍵的條件來查找資料行的.zend_db_table提供了一個fetchRow()方法可以實現(xiàn)這個功能.我們可以透過一個where條件語句(和一個可選的order語句)呼叫fetchRow()方法,然後zend_db_tabel將會回傳滿足條件的第一行資料的zend_db_table_row物件.

注意,(zend framework) 將不會對where語句進行加引號處理,所以你需要透過zend_db_adapter進行資料處理

<?php
//
// SELECT * FROM round_table
//   WHERE noble_title = "Sir"
//   AND first_name = "Robin"
//   ORDER BY favorite_color
//
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
$db = $table->getAdapter();
$where = $db->quoteInto(&#39;noble_title = ?&#39;, &#39;Sir&#39;)
    . $db->quoteInto(&#39;AND first_name = ?&#39;, &#39;Robin&#39;);
$order = &#39;favorite_color&#39;;
$row = $table->fetchRow($where, $order);
?>

9. 取回多筆記錄

假如需要一次檢索多筆記錄.可以使用fetchAll()方法.和使用fetchRow()方法類似,該方法不僅僅可以設定where和order分句,也可以設定limit-count和limit-offset值來限制回傳的結果數(shù).執(zhí)行該方法後,把選擇的結果當作一個Zend_Db_Table_Rowset物件回傳.?
注意,(zend framework) 將不會對where語句進行加引號處理,所以你需要透過zend_db_adapter進行資料處理.

<?php
class RoundTable extends Zend_Db_Table {}
$table = new RoundTable();
$db = $table->getAdapter();
// SELECT * FROM round_table
//   WHERE noble_title = "Sir"
//   ORDER BY first_name
//   LIMIT 10 OFFSET 20
$where = $db->quoteInto(&#39;noble_title = ?&#39;, &#39;Sir&#39;);
$order = &#39;first_name&#39;;
$count = 10;
$offset = 20;
$rowset = $table->fetchAll($where, $order, $count, $offset);
?>

10. Adding Domain Logic

作為Zend Framework的表模組,Zend_Db_Table將它自己很好的封裝到獨特的domain logic下. 例如,你可以重載insert()和update()方法,以實現(xiàn)在數(shù)據(jù)更改提交前的操作和驗證.

<?php
class RoundTable extends Zend_Db_Table
{
  public function insert($data)
  {
    // 添加一個時間戳
    if (empty($data[&#39;created_on&#39;])) {
      $data[&#39;created_on&#39;] = time();
    }
    return parent::insert($data);
  }
  public function update($data)
  {
    // 添加一個時間戳
    if (empty($data[&#39;updated_on&#39;])) {
      $data[&#39;updated_on&#39;] = time();
    }
    return parent::update($data);
  }
}
?>

類似的,你也可以設定自己的find()方法,透過主鍵外的其他欄位來查詢資料.

<?php
class RoundTable extends Zend_Db_Table
{
  public function findAllWithName($name)
  {
    $db = $this->getAdapter();
    $where = $db->quoteInto("name = ?", $name);
    $order = "first_name";
    return $this->fetchAll($where, $order);
  }
}
?>

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

更多Zend Framework教程之Zend_Db_Table用法詳解相關文章請關注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(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

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

SublimeText3 Mac版

SublimeText3 Mac版

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