Spaces:
Sleeping
Sleeping
| /* 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: Sterling Hughes <sterling@php.net> | | |
| // | Maintainer: Daniel Convissor <danielc@php.net> | | |
| // +----------------------------------------------------------------------+ | |
| // | |
| // $Id: msql.php 3355 2005-06-11 22:14:40Z nbm $ | |
| require_once 'DB/common.php'; | |
| /** | |
| * Database independent query interface definition for PHP's Mini-SQL | |
| * extension. | |
| * | |
| * @package DB | |
| * @version $Id: msql.php 3355 2005-06-11 22:14:40Z nbm $ | |
| * @category Database | |
| * @author Sterling Hughes <sterling@php.net> | |
| */ | |
| class DB_msql extends DB_common | |
| { | |
| // {{{ properties | |
| var $connection; | |
| var $phptype, $dbsyntax; | |
| var $prepare_tokens = array(); | |
| var $prepare_types = array(); | |
| // }}} | |
| // {{{ constructor | |
| function DB_msql() | |
| { | |
| $this->DB_common(); | |
| $this->phptype = 'msql'; | |
| $this->dbsyntax = 'msql'; | |
| $this->features = array( | |
| 'prepare' => false, | |
| 'pconnect' => true, | |
| 'transactions' => false, | |
| 'limit' => 'emulate' | |
| ); | |
| } | |
| // }}} | |
| // {{{ connect() | |
| function connect($dsninfo, $persistent = false) | |
| { | |
| if (!DB::assertExtension('msql')) { | |
| return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); | |
| } | |
| $this->dsn = $dsninfo; | |
| $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost'; | |
| $connect_function = $persistent ? 'msql_pconnect' : 'msql_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']); | |
| } else { | |
| $conn = $connect_function($dbhost); | |
| } | |
| if (!$conn) { | |
| $this->raiseError(DB_ERROR_CONNECT_FAILED); | |
| } | |
| if (!@msql_select_db($dsninfo['database'], $conn)){ | |
| return $this->raiseError(DB_ERROR_NODBSELECTED); | |
| } | |
| $this->connection = $conn; | |
| return DB_OK; | |
| } | |
| // }}} | |
| // {{{ disconnect() | |
| function disconnect() | |
| { | |
| $ret = @msql_close($this->connection); | |
| $this->connection = null; | |
| return $ret; | |
| } | |
| // }}} | |
| // {{{ simpleQuery() | |
| function simpleQuery($query) | |
| { | |
| $this->last_query = $query; | |
| $query = $this->modifyQuery($query); | |
| $result = @msql_query($query, $this->connection); | |
| if (!$result) { | |
| return $this->raiseError(); | |
| } | |
| // Determine which queries that should return data, and which | |
| // should return an error code only. | |
| return DB::isManip($query) ? DB_OK : $result; | |
| } | |
| // }}} | |
| // {{{ nextResult() | |
| /** | |
| * Move the internal msql 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 false; | |
| } | |
| // }}} | |
| // {{{ 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 (!@msql_data_seek($result, $rownum)) { | |
| return null; | |
| } | |
| } | |
| if ($fetchmode & DB_FETCHMODE_ASSOC) { | |
| $arr = @msql_fetch_array($result, MSQL_ASSOC); | |
| if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && $arr) { | |
| $arr = array_change_key_case($arr, CASE_LOWER); | |
| } | |
| } else { | |
| $arr = @msql_fetch_row($result); | |
| } | |
| if (!$arr) { | |
| if ($error = @msql_error()) { | |
| return $this->raiseError($error); | |
| } else { | |
| return null; | |
| } | |
| } | |
| 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() | |
| function freeResult($result) | |
| { | |
| return @msql_free_result($result); | |
| } | |
| // }}} | |
| // {{{ numCols() | |
| function numCols($result) | |
| { | |
| $cols = @msql_num_fields($result); | |
| if (!$cols) { | |
| return $this->raiseError(); | |
| } | |
| return $cols; | |
| } | |
| // }}} | |
| // {{{ numRows() | |
| function numRows($result) | |
| { | |
| $rows = @msql_num_rows($result); | |
| if (!$rows) { | |
| return $this->raiseError(); | |
| } | |
| return $rows; | |
| } | |
| // }}} | |
| // {{{ affected() | |
| /** | |
| * Gets the number of rows affected by a query. | |
| * | |
| * @return number of rows affected by the last query | |
| */ | |
| function affectedRows() | |
| { | |
| return @msql_affected_rows($this->connection); | |
| } | |
| // }}} | |
| } | |
| /* | |
| * Local variables: | |
| * tab-width: 4 | |
| * c-basic-offset: 4 | |
| * End: | |
| */ | |