summaryrefslogtreecommitdiff
path: root/it_db.class
diff options
context:
space:
mode:
Diffstat (limited to 'it_db.class')
-rw-r--r--it_db.class250
1 files changed, 0 insertions, 250 deletions
diff --git a/it_db.class b/it_db.class
deleted file mode 100644
index 781432c..0000000
--- a/it_db.class
+++ /dev/null
@@ -1,250 +0,0 @@
-<?php
-/*
-** $Id$
-**
-** ITools - the Internet Tools Library
-**
-** Copyright (C) 1995-2003 by the ITools Authors.
-** This program is free software; you can redistribute it and/or
-** modify it under the terms of either the GNU General Public License
-** or the GNU Lesser General Public License, as published by the Free
-** Software Foundation. See http://www.gnu.org/licenses/ for details.
-**
-** it_db.class - Generic Database class, currently using mysql.
-**
-** This tries to be as efficient as possible by maintaining
-** persistent database connections.
-*/
-
-
-/**
- * Functions to handle SQL databases
- * @see it_db_table, it_db_record
- */
-class it_db
-{
- /* public */
- var $host; /* Database host */
- var $host_update=''; /* Optional database host for updates */
- var $name; /* Name of database */
- var $numtables; /* Number of tables in databasee or 0 if not known */
- var $tablenames = array(); /* Array(0..$numtables) of table names */
-
- /* private */
- var $link; /* MySQL Link Identifier */
- var $username; /* MySQL username (if $updatehost) */
- var $password; /* MySQL password (if $updatehost) */
-
-/**
- * Constructor: connect to MySQL server and select database
- * @param $databasename name of the database to select or empty for default
- * @param $username username to connect with
- * @param $password password to connect with
- * @param $host Optional name of the host to connect to
- * @param $host_update Optional name of the host for updates (writes)
- */
-function it_db($databasename, $username, $password, $host='localhost', $host_update='')
-{
- if (empty($databasename))
- $databasename = strtr(ereg_replace('^www.', '', strtolower(ereg_replace(':.*$', '', getenv('HTTP_HOST')))), '.', '_');
-
- if ($this->link = @mysql_connect($host, $username, $password, true))
- {
- if (mysql_select_db($databasename, $this->link))
- {
- $this->host = $host;
- $this->name = $databasename;
- }
- else
- it::fatal("Can't select database \"$databasename\" on host \"$host\".");
- }
- else
- it::fatal("Can't connect to database server \"$host\" as user \"$username\".");
-
- if ($host_update)
- {
- $this->host_update = $host_update;
- $this->username = $username;
- $this->password = $password;
- }
-}
-
-
-/**
- * Perform an SQL query.
- * @see ::safe_sql_query, mysql_query
- * @param $sql SQL query
- * @return SQL handle or false in case of failure
- */
-function sql_query($sql)
-{
- debug("it_db::sql_query($sql) on {$this->host}", 5);
-
- /*
- ** If we have a special update host, and an update operation is to be
- ** performed, we switch to this host. And we stay forever and ever and ever...
- */
- if ($this->host_update && eregi('^(UPDATE|INSERT|REPLACE|DELETE|ALTER) ', $sql))
- {
- /*debug('it_db::sql_query(): switching to update host "'.$this->host_update.'"', 3); */
- if ($this->link = @mysql_connect($this->host_update, $this->username, $this->password, true))
- {
- if (mysql_select_db($this->name, $this->link))
- $this->host = $this->host_update;
- else
- it::fatal('Error selecting update database "'.$this->name.'" on host "'.$this->host_update.'".');
-
- $this->host_update='';
- }
- else
- it::fatal('Error connecting to update database server "'.$this->host_update.'" as user "'.$this->username.'".');
- }
-
- return mysql_query($sql, $this->link);
-}
-
-
-/**
- * Perform an SQL query. If the query fails, issue an error message
- * and terminate program execution. No matching rows does not mean failure.
- * @see ::sql_query, mysql_query
- * @param $sql SQL query
- * @return SQL handle
- */
-function safe_sql_query($sql)
-{
- /* debug("it_db::safe_sql_query($sql)", 4); */
- if ($result = $this->sql_query($sql))
- return $result;
- else
- {
- if ($this->errno() == 1062) /* Duplicate entry */
- return 0;
-
- fail('SQL-Query db "'.$this->name.'" host "'.$this->host."\" failed: \"$sql\":<br>".$this->error().' ('.$this->errno().')');
- }
-}
-
-
-/**
- * Free resources used by SQL handle
- * @see mysql_free_result
- * @param $handle SQL handle
- * @return
- */
-function free($handle)
-{
- return mysql_free_result($handle);
-}
-
-
-/**
- * Fetch a row as an array
- * @see mysql_fetch_array
- * @param $handle SQL handle
- * @return numeric & associative array with contents of table row
- */
-function fetch_array($handle)
-{
- return mysql_fetch_array($handle);
-}
-
-
-/**
- * Fetch a row as an associative array
- * @see mysql_fetch_array
- * @param $handle SQL handle
- * @return associative array with contents of table row
- */
-function fetch_assoc($handle)
-{
- return mysql_fetch_assoc($handle);
-}
-
-
-/**
- * Return number of rows of a query
- * @see mysql_num_rows
- * @param $handle SQL handle
- * @return number of rows the query returned
- */
-function num_rows($handle)
-{
- return mysql_num_rows($handle);
-}
-
-
-/**
- * Return number of found rows of a limited query that had SQL_COUNT_FOUND_ROWS set
- * @return number of rows the query would have returned without LIMIT
- */
-function found_rows()
-{
- list($count) = mysql_fetch_row($this->safe_sql_query('SELECT FOUND_ROWS()'));
- return intval($count);
-}
-
-
-/* Internal: get information about tables */
-function _get_table_info()
-{
- if ($this->numtables > 0) /* Already done! */
- return;
-
- if(($tables = mysql_list_tables($this->name,$this->link)) >= 0)
- {
- $this->numtables = mysql_numrows($tables);
- for ($i=0; $i < $this->numtables; ++$i)
- {
- $name = mysql_tablename($tables, $i);
- $this->tablenames[$i] = $name;
- }
- }
- else it::fatal("mysql_list_tables($this->name,$this->link) failed.");
-}
-
-
-/**
- * Return a list of all table names of this database
- * @return array with tablenames of this Database
- */
-function table_names()
-{
- $this->_get_table_info();
- return $this->tablenames;
-}
-
-
-/**
- * Return number of tables in this database
- */
-function num_tables()
-{
- $this->_get_table_info();
- return $this->numtables;
-}
-
-
-/**
- * Return last error number
- * @see ::sql_query, ::safe_sql_query, mysql_errno
- * @return last mySQL error number
- */
-function errno()
-{
- return mysql_errno($this->link);
-}
-
-
-/**
- * Return last error string
- * @see ::sql_query, ::safe_sql_query, mysql_error
- * @return last mySQL error message
- */
-function error()
-{
- return mysql_error($this->link);
-}
-
-} /* End class it_db */
-?>