| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com) 7 * @license LGPL http://www.gnu.org/copyleft/lesser.html 8 */ 9 lmb_require('limb/dbal/src/drivers/lmbDbQueryStatement.interface.php'); 10 lmb_require(dirname(__FILE__) . '/lmbOciStatement.class.php'); 11 lmb_require(dirname(__FILE__) . '/lmbOciRecord.class.php'); 12 lmb_require(dirname(__FILE__) . '/lmbOciRecordSet.class.php'); 13 lmb_require(dirname(__FILE__) . '/lmbOciArraySet.class.php'); 14 15 /** 16 * class lmbOciQueryStatement. 17 * 18 * @package dbal 19 * @version $Id: lmbOciQueryStatement.class.php 5945 2007-06-06 08:31:43Z pachanga $ 20 */ 21 class lmbOciQueryStatement extends lmbOciStatement implements lmbDbQueryStatement 22 { 23 function paginate($start, $limit) 24 { 25 // Extract the fields being selected (swiped from PEAR::DB) 26 $sql = "SELECT * FROM ({$this->sql}) WHERE 1=1"; 27 $stmt = new lmbOciStatement($this->connection, $sql); 28 $queryId = $this->connection->executeStatement($stmt->getStatement()); 29 30 $ncols = oci_num_fields($queryId); 31 32 $cols = array(); 33 for($i = 1; $i <= $ncols; $i++) 34 $cols[] = '"' . oci_field_name($queryId, $i) . '"'; 35 $fields = implode(',', $cols); 36 37 // Build the paginated query... 38 $sql = "SELECT $fields FROM". 39 " (SELECT rownum as linenum, $fields FROM". 40 " ({$this->sql})". 41 ' WHERE rownum <= '. ($start + $limit) . 42 ') WHERE linenum >= ' . ++$start; 43 44 $this->sql = $sql; 45 } 46 47 function addOrder($sort_params) 48 { 49 if(preg_match('~\s+ORDER\s+BY\s+~i', $this->sql)) 50 $this->sql .= ','; 51 else 52 $this->sql .= ' ORDER BY '; 53 54 foreach($sort_params as $field => $order) 55 $this->sql .= $this->connection->quoteIdentifier($field) . " $order,"; 56 57 $this->sql = rtrim($this->sql, ','); 58 } 59 60 function count() 61 { 62 $stmt = clone $this; 63 $stmt->sql = "SELECT COUNT(*) AS THEROWC FROM ($this->sql)"; 64 $stmt->hasChanged = true; 65 $queryId = $stmt->execute(); 66 67 $row = oci_fetch_assoc($queryId); 68 $stmt->free(); 69 return $row['THEROWC']; 70 } 71 72 function getOneRecord() 73 { 74 $queryId = $this->connection->executeStatement($this->getStatement()); 75 $values = oci_fetch_array($queryId, OCI_ASSOC+OCI_RETURN_NULLS); 76 oci_free_statement($queryId); 77 if(is_array($values)) 78 return new lmbOciRecord($values); 79 } 80 81 function getOneValue() 82 { 83 $queryId = $this->connection->executeStatement($this->getStatement()); 84 $row = oci_fetch_array($queryId, OCI_NUM+OCI_RETURN_NULLS); 85 oci_free_statement($queryId); 86 if(is_array($row) && isset($row[0])) 87 return $row[0]; 88 } 89 90 function getOneColumnAsArray() 91 { 92 $column = array(); 93 $queryId = $this->connection->executeStatement($this->getStatement()); 94 while(is_array($row = oci_fetch_array($queryId, OCI_NUM+OCI_RETURN_NULLS))) 95 $column[] = $row[0]; 96 oci_free_statement($queryId); 97 return $column; 98 } 99 100 function getRecordSet() 101 { 102 return new lmbOciRecordSet($this->connection, $this); 103 } 104 } 105 106 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Aug 30 04:38:32 2008 | Cross-referenced by PHPXref 0.7 |