Overview

Packages

  • Auth
  • Config
  • Controller
  • Date
  • Db
  • Feed
    • Abstract
    • Writers
  • File
    • Decorator
  • Form
    • Element
  • Image
  • Log
    • Writer
  • Net
    • Exception
    • REST
  • None
  • PHP
  • PHPMailer
  • Session
  • Util
  • Validate
    • Validator
  • Zend
    • Db
      • Adapter
      • Expr
      • Profiler
      • Select
      • Statement
      • Table
    • Loader
      • Autoloader
      • PluginLoader
    • Registry

Classes

  • Zend_Db_Statement
  • Zend_Db_Statement_Db2
  • Zend_Db_Statement_Mysqli
  • Zend_Db_Statement_Oracle
  • Zend_Db_Statement_Pdo
  • Zend_Db_Statement_Pdo_Ibm
  • Zend_Db_Statement_Pdo_Oci
  • Zend_Db_Statement_Sqlsrv

Interfaces

  • Zend_Db_Statement_Interface

Exceptions

  • Zend_Db_Statement_Db2_Exception
  • Zend_Db_Statement_Exception
  • Zend_Db_Statement_Mysqli_Exception
  • Zend_Db_Statement_Oracle_Exception
  • Zend_Db_Statement_Sqlsrv_Exception
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Zend Framework
  4:  *
  5:  * LICENSE
  6:  *
  7:  * This source file is subject to the new BSD license that is bundled
  8:  * with this package in the file LICENSE.txt.
  9:  * It is also available through the world-wide-web at this URL:
 10:  * http://framework.zend.com/license/new-bsd
 11:  * If you did not receive a copy of the license and are unable to
 12:  * obtain it through the world-wide-web, please send an email
 13:  * to license@zend.com so we can send you a copy immediately.
 14:  *
 15:  * @category   Zend
 16:  * @package    Zend_Db
 17:  * @subpackage Statement
 18:  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 19:  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 20:  * @version    $Id: Pdo.php 20096 2010-01-06 02:05:09Z bkarwin $
 21:  */
 22: 
 23: /**
 24:  * @see Zend_Db_Statement
 25:  */
 26: require_once 'Zend/Db/Statement.php';
 27: 
 28: /**
 29:  * Proxy class to wrap a PDOStatement object.
 30:  * Matches the interface of PDOStatement.  All methods simply proxy to the
 31:  * matching method in PDOStatement.  PDOExceptions thrown by PDOStatement
 32:  * are re-thrown as Zend_Db_Statement_Exception.
 33:  *
 34:  * @category   Zend
 35:  * @package    Zend_Db
 36:  * @subpackage Statement
 37:  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 38:  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 39:  */
 40: class Zend_Db_Statement_Pdo extends Zend_Db_Statement implements IteratorAggregate
 41: {
 42: 
 43:     /**
 44:      * @var int
 45:      */
 46:     protected $_fetchMode = PDO::FETCH_ASSOC;
 47: 
 48:     /**
 49:      * Prepare a string SQL statement and create a statement object.
 50:      *
 51:      * @param string $sql
 52:      * @return void
 53:      * @throws Zend_Db_Statement_Exception
 54:      */
 55:     protected function _prepare($sql)
 56:     {
 57:         try {
 58:             $this->_stmt = $this->_adapter->getConnection()->prepare($sql);
 59:         } catch (PDOException $e) {
 60:             require_once 'Zend/Db/Statement/Exception.php';
 61:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
 62:         }
 63:     }
 64: 
 65:     /**
 66:      * Bind a column of the statement result set to a PHP variable.
 67:      *
 68:      * @param string $column Name the column in the result set, either by
 69:      *                       position or by name.
 70:      * @param mixed  $param  Reference to the PHP variable containing the value.
 71:      * @param mixed  $type   OPTIONAL
 72:      * @return bool
 73:      * @throws Zend_Db_Statement_Exception
 74:      */
 75:     public function bindColumn($column, &$param, $type = null)
 76:     {
 77:         try {
 78:             if ($type === null) {
 79:                 return $this->_stmt->bindColumn($column, $param);
 80:             } else {
 81:                 return $this->_stmt->bindColumn($column, $param, $type);
 82:             }
 83:         } catch (PDOException $e) {
 84:             require_once 'Zend/Db/Statement/Exception.php';
 85:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
 86:         }
 87:     }
 88: 
 89:     /**
 90:      * Binds a parameter to the specified variable name.
 91:      *
 92:      * @param mixed $parameter Name the parameter, either integer or string.
 93:      * @param mixed $variable  Reference to PHP variable containing the value.
 94:      * @param mixed $type      OPTIONAL Datatype of SQL parameter.
 95:      * @param mixed $length    OPTIONAL Length of SQL parameter.
 96:      * @param mixed $options   OPTIONAL Other options.
 97:      * @return bool
 98:      * @throws Zend_Db_Statement_Exception
 99:      */
100:     protected function _bindParam($parameter, &$variable, $type = null, $length = null, $options = null)
101:     {
102:         try {
103:             if ($type === null) {
104:                 if (is_bool($variable)) {
105:                     $type = PDO::PARAM_BOOL;
106:                 } elseif ($variable === null) {
107:                     $type = PDO::PARAM_NULL;
108:                 } elseif (is_integer($variable)) {
109:                     $type = PDO::PARAM_INT;
110:                 } else {
111:                     $type = PDO::PARAM_STR;
112:                 }
113:             }
114:             return $this->_stmt->bindParam($parameter, $variable, $type, $length, $options);
115:         } catch (PDOException $e) {
116:             require_once 'Zend/Db/Statement/Exception.php';
117:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
118:         }
119:     }
120: 
121:     /**
122:      * Binds a value to a parameter.
123:      *
124:      * @param mixed $parameter Name the parameter, either integer or string.
125:      * @param mixed $value     Scalar value to bind to the parameter.
126:      * @param mixed $type      OPTIONAL Datatype of the parameter.
127:      * @return bool
128:      * @throws Zend_Db_Statement_Exception
129:      */
130:     public function bindValue($parameter, $value, $type = null)
131:     {
132:         if (is_string($parameter) && $parameter[0] != ':') {
133:             $parameter = ":$parameter";
134:         }
135: 
136:         $this->_bindParam[$parameter] = $value;
137: 
138:         try {
139:             if ($type === null) {
140:                 return $this->_stmt->bindValue($parameter, $value);
141:             } else {
142:                 return $this->_stmt->bindValue($parameter, $value, $type);
143:             }
144:         } catch (PDOException $e) {
145:             require_once 'Zend/Db/Statement/Exception.php';
146:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
147:         }
148:     }
149: 
150:     /**
151:      * Closes the cursor, allowing the statement to be executed again.
152:      *
153:      * @return bool
154:      * @throws Zend_Db_Statement_Exception
155:      */
156:     public function closeCursor()
157:     {
158:         try {
159:             return $this->_stmt->closeCursor();
160:         } catch (PDOException $e) {
161:             require_once 'Zend/Db/Statement/Exception.php';
162:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
163:         }
164:     }
165: 
166:     /**
167:      * Returns the number of columns in the result set.
168:      * Returns null if the statement has no result set metadata.
169:      *
170:      * @return int The number of columns.
171:      * @throws Zend_Db_Statement_Exception
172:      */
173:     public function columnCount()
174:     {
175:         try {
176:             return $this->_stmt->columnCount();
177:         } catch (PDOException $e) {
178:             require_once 'Zend/Db/Statement/Exception.php';
179:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
180:         }
181:     }
182: 
183:     /**
184:      * Retrieves the error code, if any, associated with the last operation on
185:      * the statement handle.
186:      *
187:      * @return string error code.
188:      * @throws Zend_Db_Statement_Exception
189:      */
190:     public function errorCode()
191:     {
192:         try {
193:             return $this->_stmt->errorCode();
194:         } catch (PDOException $e) {
195:             require_once 'Zend/Db/Statement/Exception.php';
196:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
197:         }
198:     }
199: 
200:     /**
201:      * Retrieves an array of error information, if any, associated with the
202:      * last operation on the statement handle.
203:      *
204:      * @return array
205:      * @throws Zend_Db_Statement_Exception
206:      */
207:     public function errorInfo()
208:     {
209:         try {
210:             return $this->_stmt->errorInfo();
211:         } catch (PDOException $e) {
212:             require_once 'Zend/Db/Statement/Exception.php';
213:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
214:         }
215:     }
216: 
217:     /**
218:      * Executes a prepared statement.
219:      *
220:      * @param array $params OPTIONAL Values to bind to parameter placeholders.
221:      * @return bool
222:      * @throws Zend_Db_Statement_Exception
223:      */
224:     public function _execute(array $params = null)
225:     {
226:         try {
227:             if ($params !== null) {
228:                 return $this->_stmt->execute($params);
229:             } else {
230:                 return $this->_stmt->execute();
231:             }
232:         } catch (PDOException $e) {
233:             require_once 'Zend/Db/Statement/Exception.php';
234:             throw new Zend_Db_Statement_Exception($e->getMessage(), (int) $e->getCode(), $e);
235:         }
236:     }
237: 
238:     /**
239:      * Fetches a row from the result set.
240:      *
241:      * @param int $style  OPTIONAL Fetch mode for this fetch operation.
242:      * @param int $cursor OPTIONAL Absolute, relative, or other.
243:      * @param int $offset OPTIONAL Number for absolute or relative cursors.
244:      * @return mixed Array, object, or scalar depending on fetch mode.
245:      * @throws Zend_Db_Statement_Exception
246:      */
247:     public function fetch($style = null, $cursor = null, $offset = null)
248:     {
249:         if ($style === null) {
250:             $style = $this->_fetchMode;
251:         }
252:         try {
253:             return $this->_stmt->fetch($style, $cursor, $offset);
254:         } catch (PDOException $e) {
255:             require_once 'Zend/Db/Statement/Exception.php';
256:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
257:         }
258:     }
259: 
260:     /**
261:      * Required by IteratorAggregate interface
262:      *
263:      * @return IteratorIterator
264:      */
265:     public function getIterator()
266:     {
267:         return new IteratorIterator($this->_stmt);
268:     }
269: 
270:     /**
271:      * Returns an array containing all of the result set rows.
272:      *
273:      * @param int $style OPTIONAL Fetch mode.
274:      * @param int $col   OPTIONAL Column number, if fetch mode is by column.
275:      * @return array Collection of rows, each in a format by the fetch mode.
276:      * @throws Zend_Db_Statement_Exception
277:      */
278:     public function fetchAll($style = null, $col = null)
279:     {
280:         if ($style === null) {
281:             $style = $this->_fetchMode;
282:         }
283:         try {
284:             if ($style == PDO::FETCH_COLUMN) {
285:                 if ($col === null) {
286:                     $col = 0;
287:                 }
288:                 return $this->_stmt->fetchAll($style, $col);
289:             } else {
290:                 return $this->_stmt->fetchAll($style);
291:             }
292:         } catch (PDOException $e) {
293:             require_once 'Zend/Db/Statement/Exception.php';
294:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
295:         }
296:     }
297: 
298:     /**
299:      * Returns a single column from the next row of a result set.
300:      *
301:      * @param int $col OPTIONAL Position of the column to fetch.
302:      * @return string
303:      * @throws Zend_Db_Statement_Exception
304:      */
305:     public function fetchColumn($col = 0)
306:     {
307:         try {
308:             return $this->_stmt->fetchColumn($col);
309:         } catch (PDOException $e) {
310:             require_once 'Zend/Db/Statement/Exception.php';
311:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
312:         }
313:     }
314: 
315:     /**
316:      * Fetches the next row and returns it as an object.
317:      *
318:      * @param string $class  OPTIONAL Name of the class to create.
319:      * @param array  $config OPTIONAL Constructor arguments for the class.
320:      * @return mixed One object instance of the specified class.
321:      * @throws Zend_Db_Statement_Exception
322:      */
323:     public function fetchObject($class = 'stdClass', array $config = array())
324:     {
325:         try {
326:             return $this->_stmt->fetchObject($class, $config);
327:         } catch (PDOException $e) {
328:             require_once 'Zend/Db/Statement/Exception.php';
329:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
330:         }
331:     }
332: 
333:     /**
334:      * Retrieve a statement attribute.
335:      *
336:      * @param integer $key Attribute name.
337:      * @return mixed      Attribute value.
338:      * @throws Zend_Db_Statement_Exception
339:      */
340:     public function getAttribute($key)
341:     {
342:         try {
343:             return $this->_stmt->getAttribute($key);
344:         } catch (PDOException $e) {
345:             require_once 'Zend/Db/Statement/Exception.php';
346:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
347:         }
348:     }
349: 
350:     /**
351:      * Returns metadata for a column in a result set.
352:      *
353:      * @param int $column
354:      * @return mixed
355:      * @throws Zend_Db_Statement_Exception
356:      */
357:     public function getColumnMeta($column)
358:     {
359:         try {
360:             return $this->_stmt->getColumnMeta($column);
361:         } catch (PDOException $e) {
362:             require_once 'Zend/Db/Statement/Exception.php';
363:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
364:         }
365:     }
366: 
367:     /**
368:      * Retrieves the next rowset (result set) for a SQL statement that has
369:      * multiple result sets.  An example is a stored procedure that returns
370:      * the results of multiple queries.
371:      *
372:      * @return bool
373:      * @throws Zend_Db_Statement_Exception
374:      */
375:     public function nextRowset()
376:     {
377:         try {
378:             return $this->_stmt->nextRowset();
379:         } catch (PDOException $e) {
380:             require_once 'Zend/Db/Statement/Exception.php';
381:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
382:         }
383:     }
384: 
385:     /**
386:      * Returns the number of rows affected by the execution of the
387:      * last INSERT, DELETE, or UPDATE statement executed by this
388:      * statement object.
389:      *
390:      * @return int     The number of rows affected.
391:      * @throws Zend_Db_Statement_Exception
392:      */
393:     public function rowCount()
394:     {
395:         try {
396:             return $this->_stmt->rowCount();
397:         } catch (PDOException $e) {
398:             require_once 'Zend/Db/Statement/Exception.php';
399:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
400:         }
401:     }
402: 
403:     /**
404:      * Set a statement attribute.
405:      *
406:      * @param string $key Attribute name.
407:      * @param mixed  $val Attribute value.
408:      * @return bool
409:      * @throws Zend_Db_Statement_Exception
410:      */
411:     public function setAttribute($key, $val)
412:     {
413:         try {
414:             return $this->_stmt->setAttribute($key, $val);
415:         } catch (PDOException $e) {
416:             require_once 'Zend/Db/Statement/Exception.php';
417:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
418:         }
419:     }
420: 
421:     /**
422:      * Set the default fetch mode for this statement.
423:      *
424:      * @param int   $mode The fetch mode.
425:      * @return bool
426:      * @throws Zend_Db_Statement_Exception
427:      */
428:     public function setFetchMode($mode)
429:     {
430:         $this->_fetchMode = $mode;
431:         try {
432:             return $this->_stmt->setFetchMode($mode);
433:         } catch (PDOException $e) {
434:             require_once 'Zend/Db/Statement/Exception.php';
435:             throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
436:         }
437:     }
438: 
439: }
440: 
Pry Framework API documentation generated by ApiGen 2.6.1