XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
mysqldatabase.php
Go to the documentation of this file.
1 <?php
20 defined('XOOPS_ROOT_PATH') or die('Restricted access');
21 
33 include_once XOOPS_ROOT_PATH . '/class/database/database.php';
34 // xoops_load( 'xoopsdatabase' );
45 {
51  var $conn;
52 
59  function connect($selectdb = TRUE)
60  {
61  static $db_charset_set;
62 
63  if (!extension_loaded('mysql')) {
64  trigger_error('notrace:mysql extension not loaded', E_USER_ERROR);
65  return FALSE;
66  }
67 
68  $this->allowWebChanges = ($_SERVER['REQUEST_METHOD'] != 'GET');
69 
70  if (XOOPS_DB_PCONNECT == 1) {
71  $this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
72  } else {
73  $this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
74  }
75 
76  if (!$this->conn) {
77  $this->logger->addQuery('', $this->error(), $this->errno());
78  return FALSE;
79  }
80  if ($selectdb != FALSE) {
81  if (!mysql_select_db(XOOPS_DB_NAME)) {
82  $this->logger->addQuery('', $this->error(), $this->errno());
83  return FALSE;
84  }
85  }
86  if (!isset($db_charset_set) && defined('XOOPS_DB_CHARSET') && XOOPS_DB_CHARSET) {
87  $this->queryF("SET NAMES '" . XOOPS_DB_CHARSET . "'");
88  }
89  $db_charset_set = 1;
90  $this->queryF("SET SQL_BIG_SELECTS = 1");
91  return TRUE;
92  }
93 
103  function genId($sequence)
104  {
105  return 0; // will use auto_increment
106  }
107 
114  function fetchRow($result)
115  {
116  return @mysql_fetch_row($result);
117  }
118 
124  function fetchArray($result)
125  {
126  return @mysql_fetch_assoc($result);
127  }
128 
134  function fetchBoth($result)
135  {
136  return @mysql_fetch_array($result, MYSQL_BOTH);
137  }
138 
145  function fetchObject($result)
146  {
147  return @mysql_fetch_object($result);
148  }
149 
155  function getInsertId()
156  {
157  return mysql_insert_id($this->conn);
158  }
159 
166  function getRowsNum($result)
167  {
168  return @mysql_num_rows($result);
169  }
170 
176  function getAffectedRows()
177  {
178  return mysql_affected_rows($this->conn);
179  }
180 
184  function close()
185  {
186  mysql_close($this->conn);
187  }
188 
195  function freeRecordSet($result)
196  {
197  return mysql_free_result($result);
198  }
199 
205  function error()
206  {
207  return @mysql_error();
208  }
209 
215  function errno()
216  {
217  return @mysql_errno();
218  }
219 
226  function quoteString($str)
227  {
228  return $this->quote($str);
229  }
230 
234  function quote($string)
235  {
236  return "'" . str_replace("\\\"", '"', str_replace("\\&quot;", '&quot;', mysql_real_escape_string($string, $this->conn))) . "'";
237  }
238 
248  function queryF($sql, $limit = 0, $start = 0)
249  {
250  if (!empty($limit)) {
251  if (empty($start)) {
252  $start = 0;
253  }
254  $sql = $sql . ' LIMIT ' . (int) $start . ', ' . (int) $limit;
255  }
256  $this->logger->startTime('query_time');
257  $result = mysql_query($sql, $this->conn);
258  $this->logger->stopTime('query_time');
259  $query_time = $this->logger->dumpTime('query_time', TRUE);
260  if ($result) {
261  $this->logger->addQuery($sql, NULL, NULL, $query_time);
262  return $result;
263  } else {
264  $this->logger->addQuery($sql, $this->error(), $this->errno(), $query_time);
265  return FALSE;
266  }
267  }
268 
280  function query($sql, $limit = 0, $start = 0)
281  {
282  }
283 
290  function queryFromFile($file)
291  {
292  if (FALSE !== ($fp = fopen($file, 'r'))) {
293  include_once XOOPS_ROOT_PATH . '/class/database/sqlutility.php';
294  $sql_queries = trim(fread($fp, filesize($file)));
295  SqlUtility::splitMySqlFile($pieces, $sql_queries);
296  foreach ($pieces as $query) {
297  // [0] contains the prefixed query
298  // [4] contains unprefixed table name
299  $prefixed_query = SqlUtility::prefixQuery(trim($query), $this->prefix());
300  if ($prefixed_query != FALSE) {
301  $this->query($prefixed_query[0]);
302  }
303  }
304  return TRUE;
305  }
306  return FALSE;
307  }
308 
316  function getFieldName($result, $offset)
317  {
318  return mysql_field_name($result, $offset);
319  }
320 
328  function getFieldType($result, $offset)
329  {
330  return mysql_field_type($result, $offset);
331  }
332 
339  function getFieldsNum($result)
340  {
341  return mysql_num_fields($result);
342  }
343 }
344 
354 {
364  function query($sql, $limit = 0, $start = 0)
365  {
366  return $this->queryF($sql, $limit, $start);
367  }
368 }
369 
382 {
393  function query($sql, $limit = 0, $start = 0)
394  {
395  $sql = ltrim($sql);
396  if (!$this->allowWebChanges && strtolower(substr($sql, 0, 6)) != 'select') {
397  trigger_error('Database updates are not allowed during processing of a GET request', E_USER_WARNING);
398  return FALSE;
399  }
400 
401  return $this->queryF($sql, $limit, $start);
402  }
403 }
404 
405 ?>