[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */ 3 // +----------------------------------------------------------------------+ 4 // | PHP Version 4 | 5 // +----------------------------------------------------------------------+ 6 // | Copyright (c) 1997-2004 The PHP Group | 7 // +----------------------------------------------------------------------+ 8 // | This source file is subject to version 2.02 of the PHP license, | 9 // | that is bundled with this package in the file LICENSE, and is | 10 // | available at through the world-wide-web at | 11 // | http://www.php.net/license/2_02.txt. | 12 // | If you did not receive a copy of the PHP license and are unable to | 13 // | obtain it through the world-wide-web, please send a note to | 14 // | license@php.net so we can mail you a copy immediately. | 15 // +----------------------------------------------------------------------+ 16 // | Author: Sterling Hughes <sterling@php.net> | 17 // | Maintainer: Daniel Convissor <danielc@php.net> | 18 // +----------------------------------------------------------------------+ 19 // 20 // $Id: msql.php,v 1.24 2004/03/05 01:46:53 danielc Exp $ 21 22 require_once 'DB/common.php'; 23 24 /** 25 * Database independent query interface definition for PHP's Mini-SQL 26 * extension. 27 * 28 * @package DB 29 * @version $Id: msql.php,v 1.24 2004/03/05 01:46:53 danielc Exp $ 30 * @category Database 31 * @author Sterling Hughes <sterling@php.net> 32 */ 33 class DB_msql extends DB_common 34 { 35 // {{{ properties 36 37 var $connection; 38 var $phptype, $dbsyntax; 39 var $prepare_tokens = array(); 40 var $prepare_types = array(); 41 42 // }}} 43 // {{{ constructor 44 45 function DB_msql() 46 { 47 $this->DB_common(); 48 $this->phptype = 'msql'; 49 $this->dbsyntax = 'msql'; 50 $this->features = array( 51 'prepare' => false, 52 'pconnect' => true, 53 'transactions' => false, 54 'limit' => 'emulate' 55 ); 56 } 57 58 // }}} 59 // {{{ connect() 60 61 function connect($dsninfo, $persistent = false) 62 { 63 if (!DB::assertExtension('msql')) { 64 return $this->raiseError(DB_ERROR_EXTENSION_NOT_FOUND); 65 } 66 67 $this->dsn = $dsninfo; 68 $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost'; 69 70 $connect_function = $persistent ? 'msql_pconnect' : 'msql_connect'; 71 72 if ($dbhost && $dsninfo['username'] && $dsninfo['password']) { 73 $conn = $connect_function($dbhost, $dsninfo['username'], 74 $dsninfo['password']); 75 } elseif ($dbhost && $dsninfo['username']) { 76 $conn = $connect_function($dbhost, $dsninfo['username']); 77 } else { 78 $conn = $connect_function($dbhost); 79 } 80 if (!$conn) { 81 $this->raiseError(DB_ERROR_CONNECT_FAILED); 82 } 83 if (!@msql_select_db($dsninfo['database'], $conn)){ 84 return $this->raiseError(DB_ERROR_NODBSELECTED); 85 } 86 $this->connection = $conn; 87 return DB_OK; 88 } 89 90 // }}} 91 // {{{ disconnect() 92 93 function disconnect() 94 { 95 $ret = @msql_close($this->connection); 96 $this->connection = null; 97 return $ret; 98 } 99 100 // }}} 101 // {{{ simpleQuery() 102 103 function simpleQuery($query) 104 { 105 $this->last_query = $query; 106 $query = $this->modifyQuery($query); 107 $result = @msql_query($query, $this->connection); 108 if (!$result) { 109 return $this->raiseError(); 110 } 111 // Determine which queries that should return data, and which 112 // should return an error code only. 113 return DB::isManip($query) ? DB_OK : $result; 114 } 115 116 117 // }}} 118 // {{{ nextResult() 119 120 /** 121 * Move the internal msql result pointer to the next available result 122 * 123 * @param a valid fbsql result resource 124 * 125 * @access public 126 * 127 * @return true if a result is available otherwise return false 128 */ 129 function nextResult($result) 130 { 131 return false; 132 } 133 134 // }}} 135 // {{{ fetchInto() 136 137 /** 138 * Fetch a row and insert the data into an existing array. 139 * 140 * Formating of the array and the data therein are configurable. 141 * See DB_result::fetchInto() for more information. 142 * 143 * @param resource $result query result identifier 144 * @param array $arr (reference) array where data from the row 145 * should be placed 146 * @param int $fetchmode how the resulting array should be indexed 147 * @param int $rownum the row number to fetch 148 * 149 * @return mixed DB_OK on success, null when end of result set is 150 * reached or on failure 151 * 152 * @see DB_result::fetchInto() 153 * @access private 154 */ 155 function fetchInto($result, &$arr, $fetchmode, $rownum=null) 156 { 157 if ($rownum !== null) { 158 if (!@msql_data_seek($result, $rownum)) { 159 return null; 160 } 161 } 162 if ($fetchmode & DB_FETCHMODE_ASSOC) { 163 $arr = @msql_fetch_array($result, MSQL_ASSOC); 164 if ($this->options['portability'] & DB_PORTABILITY_LOWERCASE && $arr) { 165 $arr = array_change_key_case($arr, CASE_LOWER); 166 } 167 } else { 168 $arr = @msql_fetch_row($result); 169 } 170 if (!$arr) { 171 if ($error = @msql_error()) { 172 return $this->raiseError($error); 173 } else { 174 return null; 175 } 176 } 177 if ($this->options['portability'] & DB_PORTABILITY_RTRIM) { 178 $this->_rtrimArrayValues($arr); 179 } 180 if ($this->options['portability'] & DB_PORTABILITY_NULL_TO_EMPTY) { 181 $this->_convertNullArrayValuesToEmpty($arr); 182 } 183 return DB_OK; 184 } 185 186 // }}} 187 // {{{ freeResult() 188 189 function freeResult($result) 190 { 191 return @msql_free_result($result); 192 } 193 194 // }}} 195 // {{{ numCols() 196 197 function numCols($result) 198 { 199 $cols = @msql_num_fields($result); 200 if (!$cols) { 201 return $this->raiseError(); 202 } 203 return $cols; 204 } 205 206 // }}} 207 // {{{ numRows() 208 209 function numRows($result) 210 { 211 $rows = @msql_num_rows($result); 212 if (!$rows) { 213 return $this->raiseError(); 214 } 215 return $rows; 216 } 217 218 // }}} 219 // {{{ affected() 220 221 /** 222 * Gets the number of rows affected by a query. 223 * 224 * @return number of rows affected by the last query 225 */ 226 function affectedRows() 227 { 228 return @msql_affected_rows($this->connection); 229 } 230 231 // }}} 232 233 } 234 235 /* 236 * Local variables: 237 * tab-width: 4 238 * c-basic-offset: 4 239 * End: 240 */ 241 242 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |