Go to the documentation of this file.00001 <?php
00002
00003 require 'oracleResultset.php';
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 class oracleStatement
00018 {
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 private $objAutoCommit;
00030
00031
00032
00033
00034
00035
00036
00037 private $objConnection;
00038
00039
00040
00041
00042
00043
00044
00045 private $objLimit = false;
00046
00047
00048
00049
00050
00051
00052
00053 private $objOffset = false;
00054
00055
00056
00057
00058
00059
00060
00061 private $objParameters = array();
00062
00063
00064
00065
00066
00067
00068
00069 private $objResult = false;
00070
00071
00072
00073
00074
00075
00076
00077 private $objSequence = false;
00078
00079
00080
00081
00082
00083
00084
00085 private $objQuery;
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 public function __construct( $query, $connection, $autocommit )
00100 {
00101 $this->objAutoCommit = $autocommit;
00102 $this->objConnection = $connection;
00103 $this->objQuery = $query;
00104 }
00105
00106
00107
00108
00109
00110
00111
00112
00113 public function bind( $param, $no_quotes=false )
00114 {
00115 if ( ( is_string( $param ) && !is_numeric( $param ) ) && !$no_quotes && substr_count( strtolower( $param ), 'nextval' ) == 0 )
00116 {
00117 if ( get_magic_quotes_gpc() )
00118 $param = stripslashes( $param );
00119
00120 $param = str_replace( "'", "''", $param );
00121 $param = "'" . $param . "'";
00122 }
00123
00124 $this->objParameters[] = $param;
00125 }
00126
00127
00128
00129
00130
00131
00132
00133 public function execute()
00134 {
00135 $this->objResult = oci_parse( $this->objConnection->connection(), $this->objPrepareSQL() );
00136
00137 if ( !$this->objResult )
00138 {
00139 $objError = oci_error( $this->objConnection->connection() );
00140 trigger_error( $objError['message'], E_USER_WARNING );
00141 }
00142
00143 if ( !$this->objAutoCommit )
00144 $objStmt = oci_execute( $this->objResult, OCI_DEFAULT );
00145 else
00146 $objStmt = oci_execute( $this->objResult );
00147
00148 if ( !$objStmt )
00149 {
00150 $objError = oci_error( $this->objResult );
00151 trigger_error( $objError['message'], E_USER_WARNING );
00152 }
00153
00154 return new oracleResultset( $this->objResult, $this->objConnection->connection() );
00155
00156 }
00157
00158
00159
00160
00161
00162
00163
00164 public function limit( $limit )
00165 {
00166
00167 $this->objLimit = ( is_numeric( $limit ) && $limit > 0 ) ? ( int )$limit : 1;
00168 }
00169
00170
00171
00172
00173
00174
00175
00176 public function objExecuteNonPrepared()
00177 {
00178 $this->objResult = oci_parse( $this->objConnection->connection(), $this->objQuery );
00179
00180 if ( !$this->objResult )
00181 {
00182 $objError = oci_error( $this->objConnection->connection() );
00183 trigger_error( $objError['message'], E_USER_WARNING );
00184 }
00185
00186 if ( !$this->objAutoCommit )
00187 $objStmt = oci_execute( $this->objResult, OCI_DEFAULT );
00188 else
00189 $objStmt = oci_execute( $this->objResult );
00190
00191 if ( !$objStmt )
00192 {
00193 $objError = oci_error( $this->objResult );
00194 trigger_error( $objError['message'], E_USER_WARNING );
00195 }
00196
00197 return new oracleResultset( $this->objResult, $this->objConnection->connection() );
00198 }
00199
00200
00201
00202
00203
00204
00205
00206 private function objPrepareSQL()
00207 {
00208 $objSqlParts = explode( '?', $this->objQuery );
00209 $objQuery = $objSqlParts[0];
00210
00211 for ( $i = 1; $i < count( $objSqlParts ); $i++ )
00212 $objQuery .= $this->objParameters[$i - 1] . $objSqlParts[$i];
00213
00214 $objQuery = ( ( $this->objLimit && $this->objOffset ) && substr_count( strtolower( $objQuery ), ':offset' ) ) ? str_ireplace( ':limit', ( $this->objLimit + $this->objOffset ) - 1, $objQuery ) : $objQuery;
00215 $objQuery = ( ( $this->objLimit && !$this->objOffset ) || ( ( $this->objLimit && $this->objOffset ) && !substr_count( strtolower( $objQuery ), ':offset' ) ) ) ? str_ireplace( ':limit', $this->objLimit, $objQuery ) : $objQuery;
00216 $objQuery = ( $this->objOffset ) ? str_ireplace( ':offset', $this->objOffset, $objQuery ) : $objQuery;
00217 $objQuery = ( $this->objSequence ) ? str_ireplace( ':seq', $this->objSequence, $objQuery ) : $objQuery;
00218
00219 return $objQuery;
00220 }
00221
00222
00223
00224
00225
00226
00227
00228 public function offset( $offset )
00229 {
00230
00231 $this->objOffset = ( is_numeric( $offset ) && $offset > 0 ) ? ( int )$offset : 1;
00232 }
00233
00234
00235
00236
00237
00238
00239
00240 public function sequence( $sequence )
00241 {
00242 $this->objSequence = $sequence . '.NEXTVAL';
00243 }
00244
00245 }
00246
00247 ?>