PgSQLPreparedStatement.php

Go to the documentation of this file.
00001 <?php 00002 /* 00003 * $Id: PgSQLPreparedStatement.php,v 1.12 2004/03/20 04:16:50 hlellelid Exp $ 00004 * 00005 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00006 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00007 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00008 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 00009 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00010 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00011 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00012 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00013 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00014 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00015 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00016 * 00017 * This software consists of voluntary contributions made by many individuals 00018 * and is licensed under the LGPL. For more information please see 00019 * <http://creole.phpdb.org>. 00020 */ 00021 00022 require_once 'creole/PreparedStatement.php'; 00023 require_once 'creole/common/PreparedStatementCommon.php'; 00024 00032 class PgSQLPreparedStatement extends PreparedStatementCommon implements PreparedStatement { 00033 00039 protected function escape($str) 00040 { 00041 return pg_escape_string($str); 00042 } 00043 00049 private function arrayToStr($arr) 00050 { 00051 $parts = array(); 00052 foreach((array)$arr as $el) { 00053 if (is_array($el)) { 00054 $parts[] = $this->arrayToStr($el); 00055 } else { 00056 if (is_string($el)) { 00057 $parts[] = '"' . pg_escape_string($el) . '"'; 00058 } else { 00059 $parts[] = $el; 00060 } 00061 } 00062 } 00063 return '{' . implode(',', $parts) . '}'; 00064 } 00065 00075 function setArray($paramIndex, $value) 00076 { 00077 if( $paramIndex > $this->positionsCount || $paramIndex < 1) { 00078 throw new SQLException('Cannot bind to invalid param index: '.$paramIndex); 00079 } 00080 if ($value === null) 00081 $this->setNull($paramIndex); 00082 else 00083 $this->boundInVars[$paramIndex] = "'" . $this->arrayToStr($value) . "'"; 00084 } 00085 00092 function setBoolean($paramIndex, $value) 00093 { 00094 if( $paramIndex > $this->positionsCount || $paramIndex < 1) { 00095 throw new SQLException('Cannot bind to invalid param index: '.$paramIndex); 00096 } 00097 if ($value === null) 00098 $this->setNull($paramIndex); 00099 else 00100 $this->boundInVars[$paramIndex] = ($value ? "'t'" : "'f'"); 00101 } 00102 00109 function setBlob($paramIndex, $blob) 00110 { 00111 if ($blob === null) { 00112 $this->setNull($paramIndex); 00113 } else { 00114 // they took magic __toString() out of PHP5.0.0; this sucks 00115 if (is_object($blob)) { 00116 $blob = $blob->__toString(); 00117 } 00118 $data = unpack("H*hex", $blob); 00119 $this->boundInVars[$paramIndex] = "'" . pg_escape_bytea( $blob ) . "'"; 00120 } 00121 00122 } 00123 }

This file is part of the Creole[php5] library.


Copyright © 2004 Hans Lellelid  
Creole[php5] CVS