コード例 #1
0
 function isManip($query)
 {
     return MDB::isManip($query);
 }
コード例 #2
0
 /**
  * Send a query to the database and return any results
  *
  * @access public
  *
  * @param string  $query  the SQL query
  * @param mixed   $types  array that contains the types of the columns in
  *                        the result set
  *
  * @return mixed a result handle or MDB_OK on success, a MDB error on failure
  */
 function query($query, $types = NULL)
 {
     $this->debug("Query: {$query}");
     if ($this->database_name) {
         $ismanip = MDB::isManip($query);
         $this->last_query = $query;
         $first = $this->first_selected_row;
         $limit = $this->selected_row_limit;
         $this->first_selected_row = $this->selected_row_limit = 0;
         $last_connection = $this->connection;
         $result = $this->connect();
         if (MDB::isError($result)) {
             return $result;
         }
         if ($limit > 0) {
             $fetch = $first + $limit;
             if (!$ismanip) {
                 $query = str_replace('SELECT', "SELECT TOP {$fetch}", $query);
             }
         }
         if ($last_connection != $this->connection || !strcmp($this->selected_database, '') || strcmp($this->selected_database, $this->database_name)) {
             if (!@mssql_select_db($this->database_name, $this->connection)) {
                 return $this->mssqlRaiseError();
             }
         }
         if ($result = $this->_doQuery($query)) {
             if ($ismanip) {
                 $this->affected_rows = @mssql_rows_affected($this->connection);
                 return MDB_OK;
             } else {
                 $result_value = intval($result);
                 if ($first > 0 || $limit > 0) {
                     $this->limits[$result_value] = array($first, $limit);
                 }
                 $this->highest_fetched_row[$result_value] = -1;
                 if ($types != NULL) {
                     if (!is_array($types)) {
                         $types = array($types);
                     }
                     $err = $this->setResultTypes($result, $types);
                     if (MDB::isError($err)) {
                         $this->freeResult($result);
                         return $err;
                     }
                 }
                 return $result;
             }
         }
     }
     return $this->mssqlRaiseError();
 }
コード例 #3
0
ファイル: mysql.php プロジェクト: GeekyNinja/LifesavingCAD
 /**
  * Send a query to the database and return any results
  *
  * @access public
  *
  * @param string  $query  the SQL query
  * @param mixed   $types  array that contains the types of the columns in
  *                        the result set
  *
  * @return mixed a result handle or MDB_OK on success, a MDB error on failure
  */
 function query($query, $types = NULL)
 {
     $this->debug("Query: {$query}");
     $ismanip = MDB::isManip($query);
     $this->last_query = $query;
     $first = $this->first_selected_row;
     $limit = $this->selected_row_limit;
     $this->first_selected_row = $this->selected_row_limit = 0;
     $result = $this->connect();
     if (MDB::isError($result)) {
         return $result;
     }
     if ($limit > 0) {
         if ($ismanip) {
             $query .= " LIMIT {$limit}";
         } else {
             $query .= " LIMIT {$first},{$limit}";
         }
     }
     if ($this->database_name) {
         if (!@mysql_select_db($this->database_name, $this->connection)) {
             return $this->mysqlRaiseError();
         }
     }
     if ($result = @mysql_query($query, $this->connection)) {
         if ($ismanip) {
             $this->affected_rows = @mysql_affected_rows($this->connection);
             return MDB_OK;
         } else {
             $result_value = intval($result);
             $this->highest_fetched_row[$result_value] = -1;
             if ($types != NULL) {
                 if (!is_array($types)) {
                     $types = array($types);
                 }
                 if (MDB::isError($err = $this->setResultTypes($result, $types))) {
                     $this->freeResult($result);
                     return $err;
                 }
             }
             return $result;
         }
     }
     return $this->mysqlRaiseError();
 }
コード例 #4
0
 /**
  * Send a query to the database and return any results
  *
  * @access public
  *
  * @param string  $query  the SQL query
  * @param mixed   $types  array that contains the types of the columns in
  *                        the result set
  *
  * @return mixed a result handle or MDB_OK on success, a MDB error on failure
  */
 function query($query, $types = NULL)
 {
     $this->debug("Query: {$query}");
     $ismanip = MDB::isManip($query);
     $this->last_query = $query;
     $first = $this->first_selected_row;
     $limit = $this->selected_row_limit;
     $this->first_selected_row = $this->selected_row_limit = 0;
     $result = $this->connect();
     if (MDB::isError($result)) {
         return $result;
     }
     if ($limit > 0) {
         if (!$ismanip) {
             $query = str_replace('SELECT', "SELECT TOP({$first},{$limit})", $query);
         }
     }
     if ($this->database_name != '') {
         if (!@fbsql_select_db($this->database_name, $this->connection)) {
             return $this->fbsqlRaiseError();
         }
     }
     // Add ; to the end of the query. This is required by FrontBase
     $query .= ';';
     if ($result = @fbsql_query($query, $this->connection)) {
         if ($ismanip) {
             $this->affected_rows = @fbsql_affected_rows($this->connection);
             return MDB_OK;
         } else {
             $result_value = intval($result);
             $this->highest_fetched_row[$result_value] = -1;
             if ($types != NULL) {
                 if (!is_array($types)) {
                     $types = array($types);
                 }
                 if (MDB::isError($err = $this->setResultTypes($result, $types))) {
                     $this->freeResult($result);
                     return $err;
                 }
             }
             return $result;
         }
     }
     return $this->fbsqlRaiseError();
 }
コード例 #5
0
 /**
  * Execute a query
  * @param string $query the SQL query
  * @return mixed result identifier if query executed, else MDB_error
  * @access private
  **/
 function _doQuery($query, $first = 0, $limit = 0, $prepared_query = 0)
 {
     $connection = $this->auto_commit ? $this->connection : $this->transaction_id;
     if ($prepared_query && isset($this->query_parameters[$prepared_query]) && count($this->query_parameters[$prepared_query]) > 2) {
         $this->query_parameters[$prepared_query][0] = $connection;
         $this->query_parameters[$prepared_query][1] = $query;
         $result = @call_user_func_array("ibase_query", $this->query_parameters[$prepared_query]);
     } else {
         //Not Prepared Query
         $result = @ibase_query($connection, $query);
         while (@ibase_errmsg() == 'Query argument missed') {
             //ibase_errcode() only available in PHP5
             //connection lost, try again...
             $this->connect();
             //rollback the failed transaction to prevent deadlock and execute the query again
             if ($this->transaction_id) {
                 $this->rollback();
             }
             $result = @ibase_query($this->connection, $query);
         }
     }
     if ($result) {
         if (!MDB::isManip($query)) {
             $result_value = intval($result);
             $this->current_row[$result_value] = -1;
             if ($limit > 0) {
                 $this->limits[$result_value] = array($first, $limit, 0);
             }
             $this->highest_fetched_row[$result_value] = -1;
         } else {
             $this->affected_rows = -1;
         }
     } else {
         return $this->raiseError(MDB_ERROR, NULL, NULL, '_doQuery: Could not execute query ("' . $query . '"): ' . @ibase_errmsg());
     }
     return $result;
 }
コード例 #6
0
ファイル: pgsql.php プロジェクト: ookwudili/chisimba
 /**
  * Send a query to the database and return any results
  *
  * @param string $query the SQL query
  * @param array $types array that contains the types of the columns in
  *                         the result set
  * @return mixed result identifier if query executed, else MDB_error
  * @access public
  **/
 function query($query, $types = NULL)
 {
     $this->debug("Query: {$query}");
     $ismanip = MDB::isManip($query);
     $this->last_query = $query;
     $first = $this->first_selected_row;
     $limit = $this->selected_row_limit;
     $this->first_selected_row = $this->selected_row_limit = 0;
     $connected = $this->connect();
     if (MDB::isError($connected)) {
         return $connected;
     }
     if (!$ismanip && $limit > 0) {
         if ($this->auto_commit && MDB::isError($this->_doQuery('BEGIN'))) {
             return $this->raiseError(MDB_ERROR);
         }
         $result = $this->_doQuery('DECLARE select_cursor SCROLL CURSOR FOR ' . $query);
         if (!MDB::isError($result)) {
             if ($first > 0 && MDB::isError($result = $this->_doQuery("MOVE FORWARD {$first} FROM select_cursor"))) {
                 $this->freeResult($result);
                 return $result;
             }
             if (MDB::isError($result = $this->_doQuery("FETCH FORWARD {$limit} FROM select_cursor"))) {
                 $this->freeResult($result);
                 return $result;
             }
         } else {
             return $result;
         }
         if ($this->auto_commit && MDB::isError($result2 = $this->_doQuery('END'))) {
             $this->freeResult($result);
             return $result2;
         }
     } else {
         $result = $this->_doQuery($query);
         if (MDB::isError($result)) {
             return $result;
         }
     }
     if ($ismanip) {
         $this->affected_rows = @pg_cmdtuples($result);
         return MDB_OK;
     } elseif (preg_match('/^\\s*\\(?\\s*SELECT\\s+/si', $query) && !preg_match('/^\\s*\\(?\\s*SELECT\\s+INTO\\s/si', $query) || preg_match('/^\\s*EXPLAIN/si', $query)) {
         /* PostgreSQL commands:
               ABORT, ALTER, BEGIN, CLOSE, CLUSTER, COMMIT, COPY,
               CREATE, DECLARE, DELETE, DROP TABLE, EXPLAIN, FETCH,
               GRANT, INSERT, LISTEN, LOAD, LOCK, MOVE, NOTIFY, RESET,
               REVOKE, ROLLBACK, SELECT, SELECT INTO, SET, SHOW,
               UNLISTEN, UPDATE, VACUUM
            */
         $result_value = intval($result);
         $this->highest_fetched_row[$result_value] = -1;
         if ($types != NULL) {
             if (!is_array($types)) {
                 $types = array($types);
             }
             if (MDB::isError($err = $this->setResultTypes($result, $types))) {
                 $this->freeResult($result);
                 return $err;
             }
         }
         return $result;
     } else {
         $this->affected_rows = 0;
         return MDB_OK;
     }
     return $this->raiseError(MDB_ERROR);
 }