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

📄 fbsql.php

📁 太烦了
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */// +----------------------------------------------------------------------+// | PHP Version 4                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2004 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license,      |// | that is bundled with this package in the file LICENSE, and is        |// | available at through the world-wide-web at                           |// | http://www.php.net/license/2_02.txt.                                 |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Author: Frank M. Kromann <frank@frontbase.com>                       |// | Maintainer: Daniel Convissor <danielc@php.net>                       |// +----------------------------------------------------------------------+//// $Id: fbsql.php,v 1.2 2005/07/22 05:10:13 max Exp $// XXX legend://// XXX ERRORMSG: The error message from the fbsql function should//               be registered here.//// TODO/wishlist:// longReadlen// binmoderequire_once PEAR_DIR . 'DB/common.php';/** * Database independent query interface definition for PHP's FrontBase * extension. * * @package  DB * @version  $Id: fbsql.php,v 1.2 2005/07/22 05:10:13 max Exp $ * @category Database * @author   Frank M. Kromann <frank@frontbase.com> */class DB_fbsql extends DB_common{    // {{{ properties    var $connection;    var $phptype, $dbsyntax;    var $prepare_tokens = array();    var $prepare_types = array();    var $num_rows = array();    var $fetchmode = DB_FETCHMODE_ORDERED; /* Default fetch mode */    // }}}    // {{{ constructor    /**     * DB_fbsql constructor.     *     * @access public     */    function DB_fbsql()    {        $this->DB_common();        $this->phptype = 'fbsql';        $this->dbsyntax = 'fbsql';        $this->features = array(            'prepare' => false,            'pconnect' => true,            'transactions' => true,            'limit' => 'emulate'        );        $this->errorcode_map = array(            1004 => DB_ERROR_CANNOT_CREATE,            1005 => DB_ERROR_CANNOT_CREATE,            1006 => DB_ERROR_CANNOT_CREATE,            1007 => DB_ERROR_ALREADY_EXISTS,            1008 => DB_ERROR_CANNOT_DROP,            1046 => DB_ERROR_NODBSELECTED,            1050 => DB_ERROR_ALREADY_EXISTS,            1051 => DB_ERROR_NOSUCHTABLE,            1054 => DB_ERROR_NOSUCHFIELD,            1062 => DB_ERROR_ALREADY_EXISTS,            1064 => DB_ERROR_SYNTAX,            1100 => DB_ERROR_NOT_LOCKED,            1136 => DB_ERROR_VALUE_COUNT_ON_ROW,            1146 => DB_ERROR_NOSUCHTABLE,        );    }    // }}}    // {{{ connect()    /**     * Connect to a database and log in as the specified user.     *     * @param $dsn the data source name (see DB::parseDSN for syntax)     * @param $persistent (optional) whether the connection should     *        be persistent     * @access public     * @return int DB_OK on success, a DB error on failure     */    function connect($dsninfo, $persistent = false)    {        if (!DB::assertExtension('fbsql')) {            return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND);        }        $this->dsn = $dsninfo;        $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost';        $php_errormsg = '';        $connect_function = $persistent ? 'fbsql_pconnect' : 'fbsql_connect';        if ($dbhost && $dsninfo['username'] && $dsninfo['password']) {            $conn = @$connect_function($dbhost, $dsninfo['username'],                                       $dsninfo['password']);        } elseif ($dbhost && $dsninfo['username']) {            $conn = @$connect_function($dbhost, $dsninfo['username']);        } elseif ($dbhost) {            $conn = @$connect_function($dbhost);        } else {            $conn = false;        }        if (!$conn) {            if (empty($php_errormsg)) {                return $this->raiseError(DB_ERROR_CONNECT_FAILED);            } else {                return $this->raiseError(DB_ERROR_CONNECT_FAILED, null, null,                                         null, $php_errormsg);            }        }        if ($dsninfo['database']) {            if (!fbsql_select_db($dsninfo['database'], $conn)) {                return $this->fbsqlRaiseError();            }        }        $this->connection = $conn;        return DB_OK;    }    // }}}    // {{{ disconnect()    /**     * Log out and disconnect from the database.     *     * @access public     *     * @return bool true on success, false if not connected.     */    function disconnect()    {        $ret = @fbsql_close($this->connection);        $this->connection = null;        return $ret;    }    // }}}    // {{{ simpleQuery()    /**     * Send a query to fbsql and return the results as a fbsql resource     * identifier.     *     * @param the SQL query     *     * @access public     *     * @return mixed returns a valid fbsql result for successful SELECT     * queries, DB_OK for other successful queries.  A DB error is     * returned on failure.     */    function simpleQuery($query)    {        $this->last_query = $query;        $query = $this->modifyQuery($query);        $result = @fbsql_query("$query;", $this->connection);        if (!$result) {            return $this->fbsqlRaiseError();        }        // Determine which queries that should return data, and which        // should return an error code only.        if (DB::isManip($query)) {            return DB_OK;        }        $numrows = $this->numrows($result);        if (is_object($numrows)) {            return $numrows;        }        $this->num_rows[$result] = $numrows;        return $result;    }    // }}}    // {{{ nextResult()    /**     * Move the internal fbsql result pointer to the next available result     *     * @param a valid fbsql result resource     *     * @access public     *     * @return true if a result is available otherwise return false     */    function nextResult($result)    {        return @fbsql_next_result($result);    }    // }}}    // {{{ fetchInto()    /**     * Fetch a row and insert the data into an existing array.     *     * Formating of the array and the data therein are configurable.     * See DB_result::fetchInto() for more information.     *     * @param resource $result    query result identifier     * @param array    $arr       (reference) array where data from the row     *                            should be placed     * @param int      $fetchmode how the resulting array should be indexed     * @param int      $rownum    the row number to fetch     *     * @return mixed DB_OK on success, null when end of result set is     *               reached or on failure     *     * @see DB_result::fetchInto()     * @access private     */    function fetchInto($result, &$arr, $fetchmode, $rownum=null)    {        if ($rownum !== null) {            if (!@fbsql_data_seek($result, $rownum)) {                return null;            }        }        if ($fetchmode & DB_FETCHMODE_ASSOC) {            $arr = @fbsql_fetch_array($result, FBSQL_ASSOC);            if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && $arr) {                $arr = array_change_key_case($arr, CASE_LOWER);            }        } else {            $arr = @fbsql_fetch_row($result);        }        if (!$arr) {            $errno = @fbsql_errno($this->connection);            if (!$errno) {                return null;            }            return $this->fbsqlRaiseError($errno);        }        if ($this->options['portability'] & DB_PORTABILITY_RTRIM) {            $this->_rtrimArrayValues($arr);        }        if ($this->options['portability'] & DB_PORTABILITY_NULL_TO_EMPTY) {            $this->_convertNullArrayValuesToEmpty($arr);        }        return DB_OK;    }    // }}}    // {{{ freeResult()    /**     * Free the internal resources associated with $result.     *     * @param $result fbsql result identifier     *     * @access public     *     * @return bool true on success, false if $result is invalid     */    function freeResult($result)    {        return @fbsql_free_result($result);    }    // }}}    // {{{ autoCommit()    function autoCommit($onoff=false)    {        if ($onoff) {            $this->query("SET COMMIT TRUE");        } else {            $this->query("SET COMMIT FALSE");        }    }    // }}}    // {{{ commit()    function commit()    {        @fbsql_commit();    }    // }}}    // {{{ rollback()    function rollback()    {        @fbsql_rollback();    }    // }}}    // {{{ numCols()    /**     * Get the number of columns in a result set.     *     * @param $result fbsql result identifier     *     * @access public     *     * @return int the number of columns per row in $result     */    function numCols($result)    {        $cols = @fbsql_num_fields($result);        if (!$cols) {

⌨️ 快捷键说明

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