| Line 50... | Line 50... | 
          
            | 50 |              'returnData' => array(),
 | 50 |              'returnData' => array(),
 | 
          
            | 51 |              // an array that contains the meta data from the query for each column
 | 51 |              // an array that contains the meta data from the query for each column
 | 
          
            | 52 |              'columnMetaData' => array(),
 | 52 |              'columnMetaData' => array(),
 | 
          
            | 53 |              // number of columns (fields) returned by query (select only)
 | 53 |              // number of columns (fields) returned by query (select only)
 | 
          
            | 54 |              'numfields' => 0,
 | 54 |              'numfields' => 0,
 | 
          
            | 55 |              // type of data returned, array of array, array of hash, or both
 | - |   | 
          
            | 56 |              'fetchType' => MYSQLI_BOTH,
 | - |   | 
          
            | 57 |              // human readable form of fetchType
 | 55 |              // human readable form of fetchType
 | 
          
            | 58 |              'returnType' => 'both',
 | 56 |              'returnType' => 'both',
 | 
          
            | 59 |              // array of any errors which occurred
 | 57 |              // array of any errors which occurred
 | 
          
            | 60 |              'error' => array(),
 | 58 |              'error' => array(),
 | 
          
            | 61 |              // if set to a table name, all modifying queries are written to it
 | 59 |              // if set to a table name, all modifying queries are written to it
 | 
          
            | Line 211... | Line 209... | 
          
            | 211 |       public function doSQL( $query = null, $parameters = array() ) {
 | 209 |       public function doSQL( $query = null, $parameters = array() ) {
 | 
          
            | 212 |          $errors = array();
 | 210 |          $errors = array();
 | 
          
            | 213 |          if ( isset( $query ) ) {
 | 211 |          if ( isset( $query ) ) {
 | 
          
            | 214 |             $this->parameters['query'] = $query;
 | 212 |             $this->parameters['query'] = $query;
 | 
          
            | 215 |          }
 | 213 |          }
 | 
          
            | - |   | 214 |          if ( isset( $parameters['returnType'] ) ) {
 | 
          
            | - |   | 215 |             $this->parameters['returnType'] = $parameters['returnType'];
 | 
          
            | - |   | 216 |          }
 | 
          
            | 216 |          // if it is a "selectstatement" it doesn't modify data
 | 217 |          // if it is a "selectstatement" it doesn't modify data
 | 
          
            | 217 |          // if query is an array, assume it modifies something
 | 218 |          // if query is an array, assume it modifies something
 | 
          
            | 218 |          // if it is a single statement, look for the regex
 | 219 |          // if it is a single statement, look for the regex
 | 
          
            | 219 |          $selectStatement = is_array( $this->parameters['query'] ) ?
 | 220 |          $selectStatement = is_array( $this->parameters['query'] ) ?
 | 
          
            | 220 |             false :
 | 221 |             false :
 | 
          
            | 221 |             ( preg_match( '/^\s*(select)|(show)|(describe)|(explain)/xsi', $this->parameters['query'] ) === 1 );
 | 222 |             ( preg_match( '/^\s*(select)|(show)|(describe)|(explain)/xsi', $this->parameters['query'] ) === 1 );
 | 
          
            | 222 |         
 | 223 |         
 | 
          
            | 223 |          // different actions based on whether it modifies data or not
 | 224 |          // different actions based on whether it modifies data or not
 | 
          
            | 224 |          if ( $selectStatement ) { // if a select, simply return the rows
 | 225 |          if ( $selectStatement ) { // if a select, simply return the rows
 | 
          
            | 225 |             // dataset is small enough, we just read it into memory all at one time.
 | 226 |             // dataset is small enough, we just read it into memory all at one time.
 | 
          
            | 226 |             // NOTE: fetch_all is nice, but tied to mysqlnd, which has reports of problems, so we do it the old way
 | 227 |             // set MYSQLI_USE_RESULT for unbuffered results
 | 
          
            | 227 |             if ( $sth = parent::query( $this->parameters['query'], MYSQLI_USE_RESULT  ) ) {
 | 228 |             if ( $sth = parent::query( $this->parameters['query'], MYSQLI_USE_RESULT  ) ) {
 | 
          
            | 228 |                if ( $sth === false ) {
 | 229 |                if ( $sth === false ) {
 | 
          
            | 229 |                   $errors[] = array( 'id' => $this->errno, 'message' => $this->error );
 | 230 |                   $errors[] = array( 'id' => $this->errno, 'message' => $this->error );
 | 
          
            | 230 |                } else {
 | 231 |                } else {
 | 
          
            | - |   | 232 |                   // query can return either an array of array, array of hash, or both. Default is both
 | 
          
            | - |   | 233 |                   $returnType = MYSQLI_BOTH;
 | 
          
            | 231 |                   $this->parameters['columnMetaData'] = $sth->fetch_fields(); // get metadata
 | 234 |                   $this->parameters['columnMetaData'] = $sth->fetch_fields(); // get metadata
 | 
          
            | 232 |                   $this->parameters['returnData'] = array(); // we'll put all the results in an array
 | 235 |                   $this->parameters['returnData'] = array(); // we'll put all the results in an array
 | 
          
            | 233 |                   // $fetchtype returns either an array of array, array of hash, or both. Default is array of hash
 | 236 |                   // $fetchtype returns either an array of array, array of hash, or both. Default is both
 | 
          
            | 234 |                   if ( isset( $this->parameters['returnType'] ) ) {
 | 237 |                   switch ( $this->parameters['returnType'] ) {
 | 
          
            | 235 |                      $this->parameters[ 'fetchType' ] = $this->parameters['returnType'] == 'array' ? MYSQLI_NUM : (
 | 238 |                      case 'array': 
 | 
          
            | 236 |                            ( $this->parameters['returnType'] == 'both' ) ? MYSQLI_BOTH : MYSQLI_ASSOC
 | 239 |                         $returnType = MYSQLI_NUM;
 | 
          
            | 237 |                            );
 | 240 |                         break;
 | 
          
            | 238 |                   } else { // default is both (hash and numeric)
 | 241 |                      case 'associative':
 | 
          
            | 239 |                      $this->parameters[ 'fetchType' ] =  MYSQLI_BOTH;
 | 242 |                         $returnType = MYSQLI_ASSOC;
 | 
          
            | - |   | 243 |                         break;
 | 
          
            | 240 |                      $this->parameters['returnType'] = 'both';
 | 244 |                      default: $returnType = MYSQLI_BOTH;
 | 
          
            | 241 |                   }
 | 245 |                   }
 | 
          
            | 242 |                   // slurp all the stuff in
 | 246 |                   // slurp all the stuff in
 | 
          
            | 243 |                   while ( $values =  $sth->fetch_array( $this->parameters[ 'fetchType' ] ) ) {
 | 247 |                   while ( $values =  $sth->fetch_array( $returnType ) ) {
 | 
          
            | 244 |                      $this->parameters['returnData'][] = $values;
 | 248 |                      $this->parameters['returnData'][] = $values;
 | 
          
            | 245 |                   }
 | 249 |                   }
 | 
          
            | 246 |                   $sth->free(); // cleanup memory, don't need two copies
 | 250 |                   $sth->free(); // cleanup memory, don't need two copies
 | 
          
            | 247 |                } // if we had no errors
 | 251 |                } // if we had no errors
 | 
          
            | 248 |             }
 | 252 |             }
 |