⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysql.php

📁 开源邮件管理系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
        }        if ($fetchmode == MDB2_FETCHMODE_DEFAULT) {            $fetchmode = $this->db->fetchmode;        }        if ($fetchmode & MDB2_FETCHMODE_ASSOC) {            $row = @mysql_fetch_assoc($this->result);            if (is_array($row)                && $this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE            ) {                $row = array_change_key_case($row, $this->db->options['field_case']);            }        } else {           $row = @mysql_fetch_row($this->result);        }        if (!$row) {            if ($this->result === false) {                $err =& $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,                    'resultset has already been freed', __FUNCTION__);                return $err;            }            $null = null;            return $null;        }        $mode = $this->db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL;        $rtrim = false;        if ($this->db->options['portability'] & MDB2_PORTABILITY_RTRIM) {            if (empty($this->types)) {                $mode += MDB2_PORTABILITY_RTRIM;            } else {                $rtrim = true;            }        }        if ($mode) {            $this->db->_fixResultArrayValues($row, $mode);        }        if (!empty($this->types)) {            $row = $this->db->datatype->convertResultRow($this->types, $row, $rtrim);        }        if (!empty($this->values)) {            $this->_assignBindColumns($row);        }        if ($fetchmode === MDB2_FETCHMODE_OBJECT) {            $object_class = $this->db->options['fetch_class'];            if ($object_class == 'stdClass') {                $row = (object) $row;            } else {                $row = &new $object_class($row);            }        }        ++$this->rownum;        return $row;    }    // }}}    // {{{ _getColumnNames()    /**     * Retrieve the names of columns returned by the DBMS in a query result.     *     * @return  mixed   Array variable that holds the names of columns as keys     *                  or an MDB2 error on failure.     *                  Some DBMS may not return any columns when the result set     *                  does not contain any rows.     * @access private     */    function _getColumnNames()    {        $columns = array();        $numcols = $this->numCols();        if (PEAR::isError($numcols)) {            return $numcols;        }        for ($column = 0; $column < $numcols; $column++) {            $column_name = @mysql_field_name($this->result, $column);            $columns[$column_name] = $column;        }        if ($this->db->options['portability'] & MDB2_PORTABILITY_FIX_CASE) {            $columns = array_change_key_case($columns, $this->db->options['field_case']);        }        return $columns;    }    // }}}    // {{{ numCols()    /**     * Count the number of columns returned by the DBMS in a query result.     *     * @return mixed integer value with the number of columns, a MDB2 error     *                       on failure     * @access public     */    function numCols()    {        $cols = @mysql_num_fields($this->result);        if (is_null($cols)) {            if ($this->result === false) {                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,                    'resultset has already been freed', __FUNCTION__);            } elseif (is_null($this->result)) {                return count($this->types);            }            return $this->db->raiseError(null, null, null,                'Could not get column count', __FUNCTION__);        }        return $cols;    }    // }}}    // {{{ free()    /**     * Free the internal resources associated with result.     *     * @return boolean true on success, false if result is invalid     * @access public     */    function free()    {        if (is_resource($this->result) && $this->db->connection) {            $free = @mysql_free_result($this->result);            if ($free === false) {                return $this->db->raiseError(null, null, null,                    'Could not free result', __FUNCTION__);            }        }        $this->result = false;        return MDB2_OK;    }}/** * MDB2 MySQL buffered result driver * * @package MDB2 * @category Database * @author  Lukas Smith <smith@pooteeweet.org> */class MDB2_BufferedResult_mysql extends MDB2_Result_mysql{    // }}}    // {{{ seek()    /**     * Seek to a specific row in a result set     *     * @param int    $rownum    number of the row where the data can be found     * @return mixed MDB2_OK on success, a MDB2 error on failure     * @access public     */    function seek($rownum = 0)    {        if ($this->rownum != ($rownum - 1) && !@mysql_data_seek($this->result, $rownum)) {            if ($this->result === false) {                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,                    'resultset has already been freed', __FUNCTION__);            } elseif (is_null($this->result)) {                return MDB2_OK;            }            return $this->db->raiseError(MDB2_ERROR_INVALID, null, null,                'tried to seek to an invalid row number ('.$rownum.')', __FUNCTION__);        }        $this->rownum = $rownum - 1;        return MDB2_OK;    }    // }}}    // {{{ valid()    /**     * Check if the end of the result set has been reached     *     * @return mixed true or false on sucess, a MDB2 error on failure     * @access public     */    function valid()    {        $numrows = $this->numRows();        if (PEAR::isError($numrows)) {            return $numrows;        }        return $this->rownum < ($numrows - 1);    }    // }}}    // {{{ numRows()    /**     * Returns the number of rows in a result object     *     * @return mixed MDB2 Error Object or the number of rows     * @access public     */    function numRows()    {        $rows = @mysql_num_rows($this->result);        if (false === $rows) {            if (false === $this->result) {                return $this->db->raiseError(MDB2_ERROR_NEED_MORE_DATA, null, null,                    'resultset has already been freed', __FUNCTION__);            } elseif (is_null($this->result)) {                return 0;            }            return $this->db->raiseError(null, null, null,                'Could not get row count', __FUNCTION__);        }        return $rows;    }}/** * MDB2 MySQL statement driver * * @package MDB2 * @category Database * @author  Lukas Smith <smith@pooteeweet.org> */class MDB2_Statement_mysql extends MDB2_Statement_Common{    // {{{ _execute()    /**     * Execute a prepared query statement helper method.     *     * @param mixed $result_class string which specifies which result class to use     * @param mixed $result_wrap_class string which specifies which class to wrap results in     * @return mixed a result handle or MDB2_OK on success, a MDB2 error on failure     * @access private     */    function &_execute($result_class = true, $result_wrap_class = false)    {        if (is_null($this->statement)) {            $result =& parent::_execute($result_class, $result_wrap_class);            return $result;        }        $this->db->last_query = $this->query;        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'pre', 'parameters' => $this->values));        if ($this->db->getOption('disable_query')) {            $result = $this->is_manip ? 0 : null;            return $result;        }        $connection = $this->db->getConnection();        if (PEAR::isError($connection)) {            return $connection;        }        $query = 'EXECUTE '.$this->statement;        if (!empty($this->positions)) {            $parameters = array();            foreach ($this->positions as $parameter) {                if (!array_key_exists($parameter, $this->values)) {                    return $this->db->raiseError(MDB2_ERROR_NOT_FOUND, null, null,                        'Unable to bind to missing placeholder: '.$parameter, __FUNCTION__);                }                $value = $this->values[$parameter];                $type = array_key_exists($parameter, $this->types) ? $this->types[$parameter] : null;                if (is_resource($value) || $type == 'clob' || $type == 'blob' && $this->db->options['lob_allow_url_include']) {                    if (!is_resource($value) && preg_match('/^(\w+:\/\/)(.*)$/', $value, $match)) {                        if ($match[1] == 'file://') {                            $value = $match[2];                        }                        $value = @fopen($value, 'r');                        $close = true;                    }                    if (is_resource($value)) {                        $data = '';                        while (!@feof($value)) {                            $data.= @fread($value, $this->db->options['lob_buffer_length']);                        }                        if ($close) {                            @fclose($value);                        }                        $value = $data;                    }                }                $quoted = $this->db->quote($value, $type);                if (PEAR::isError($quoted)) {                    return $quoted;                }                $param_query = 'SET @'.$parameter.' = '.$quoted;                $result = $this->db->_doQuery($param_query, true, $connection);                if (PEAR::isError($result)) {                    return $result;                }            }            $query.= ' USING @'.implode(', @', array_values($this->positions));        }        $result = $this->db->_doQuery($query, $this->is_manip, $connection);        if (PEAR::isError($result)) {            return $result;        }        if ($this->is_manip) {            $affected_rows = $this->db->_affectedRows($connection, $result);            return $affected_rows;        }        $result =& $this->db->_wrapResult($result, $this->result_types,            $result_class, $result_wrap_class, $this->limit, $this->offset);        $this->db->debug($this->query, 'execute', array('is_manip' => $this->is_manip, 'when' => 'post', 'result' => $result));        return $result;    }    // }}}    // {{{ free()    /**     * Release resources allocated for the specified prepared query.     *     * @return mixed MDB2_OK on success, a MDB2 error on failure     * @access public     */    function free()    {        if (is_null($this->positions)) {            return $this->db->raiseError(MDB2_ERROR, null, null,                'Prepared statement has already been freed', __FUNCTION__);        }        $result = MDB2_OK;        if (!is_null($this->statement)) {            $connection = $this->db->getConnection();            if (PEAR::isError($connection)) {                return $connection;            }            $query = 'DEALLOCATE PREPARE '.$this->statement;            $result = $this->db->_doQuery($query, true, $connection);        }        parent::free();        return $result;    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -