function _query($sql, $inputarr = false) { global $ADODB_COUNTRECS; if ($ADODB_COUNTRECS == false && ADODB_PHPVER >= 0x4300) { return sybase_unbuffered_query($sql, $this->_connectionID); } else { return sybase_query($sql, $this->_connectionID); } }
/** * Execute any statement * * @param string sql * @param bool buffered default TRUE * @return rdbms.sybase.SybaseResultSet or TRUE if no resultset was created * @throws rdbms.SQLException */ protected function query0($sql, $buffered = TRUE) { if (!is_resource($this->handle)) { if (!($this->flags & DB_AUTOCONNECT)) { throw new SQLStateException('Not connected'); } $c = $this->connect(); // Check for subsequent connection errors if (FALSE === $c) { throw new SQLStateException('Previously failed to connect'); } } if (!$buffered) { $result = @sybase_unbuffered_query($sql, $this->handle, FALSE); } else { if ($this->flags & DB_UNBUFFERED) { $result = @sybase_unbuffered_query($sql, $this->handle, $this->flags & DB_STORE_RESULT); } else { $result = @sybase_query($sql, $this->handle); } } if (FALSE === $result) { $message = 'Statement failed: ' . trim(sybase_get_last_message()) . ' @ ' . $this->dsn->getHost(); if (!is_resource($error = sybase_query('select @@error', $this->handle))) { // The only case selecting @@error should fail is if we receive a // disconnect. We could also check on the warnings stack if we can // find the following: // // Sybase: Client message: Read from SQL server failed. (severity 78) // // but that seems a bit errorprone. throw new SQLConnectionClosedException($message, $sql); } $code = current(sybase_fetch_row($error)); switch ($code) { case 1205: // Deadlock throw new SQLDeadlockException($message, $sql, $code); default: // Other error throw new SQLStatementFailedException($message, $sql, $code); } } return TRUE === $result ? $result : new SybaseResultSet($result, $this->tz); }