10.4. Zend_Db_Select
你可以使用該對象和它的相應方法構建一個select查詢語句,然后生成 字符串符用來傳送給zend_db_adapter進行查詢或者讀取結果。
你也可以在你的查詢語句中使用綁定的參數,而不需要自己為參數加引號.
10.4.2. 同一表中查詢多列數據
10.4.3. 多表聯合查詢
10.4.4. WHERE條件
10.4.5. GROUP BY分句
10.4.6. HAVING 條件
10.4.7. ORDER BY 分句
10.4.8. 通過總數和偏移量進行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('foo', '*');$select->order('id');$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('foo', '*');$select->order('id');$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語句的動態創建.//?>
10.4.9. 通過頁數和總數進行LIMIT限制
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答