.
// Should not be enabled for public code
//ini_set('display_errors', 'stdout');
//error_reporting(E_ALL);
/// represents a connection to a database.
// Intended to be subclassed (e.g., BoincDb, BossaDb)
class DbConn {
var $db_conn;
var $db_name;
function init_conn($user, $passwd, $host, $name) {
$this->db_conn = mysql_pconnect($host, $user, $passwd);
if (!$this->db_conn) {
return false;
}
$this->db_name = $name;
return true;
}
function do_query($q) {
global $generating_xml;
//echo "query: $q
\n";
$ret = mysql_query($q, $this->db_conn);
if (!$ret) {
if (!$generating_xml) {
echo "Database Error
\n";
}
//echo ": ", mysql_error(), "\n
"; //var_dump(debug_backtrace()); //echo "query: $q\n"; return null; } return $ret; } function affected_rows() { return mysql_affected_rows($this->db_conn); } function lookup_fields($table, $classname, $fields, $clause) { $query = "select $fields from ".$this->db_name.".$table where $clause"; $result = $this->do_query($query); if (!$result) { return null; } $obj = mysql_fetch_object($result, $classname); mysql_free_result($result); return $obj; } function lookup($table, $classname, $clause) { $query = "select * from ".$this->db_name.".$table where $clause"; $result = $this->do_query($query); if (!$result) { return null; } $obj = mysql_fetch_object($result, $classname); mysql_free_result($result); return $obj; } function lookup_id($id, $table, $classname) { return $this->lookup($table, $classname, "id=$id"); } function enum_general($classname, $query) { $result = $this->do_query($query); if (!$result) return null; $x = array(); while ($obj = mysql_fetch_object($result, $classname)) { $x[] = $obj; } mysql_free_result($result); return $x; } function enum_fields( $table, $classname, $fields, $where_clause, $order_clause ) { $x = array(); if ($where_clause) { $where_clause = "where $where_clause"; } $query = "select $fields from ".$this->db_name.".$table $where_clause $order_clause"; $result = $this->do_query($query); if (!$result) return null; $x = array(); while ($obj = mysql_fetch_object($result, $classname)) { $x[] = $obj; } mysql_free_result($result); return $x; } function enum($table, $classname, $where_clause=null, $order_clause=null) { return self::enum_fields( $table, $classname, '*', $where_clause, $order_clause ); } function update($obj, $table, $clause) { $query = "update ".$this->db_name.".$table set $clause where id=$obj->id"; return $this->do_query($query); } function update_aux($table, $clause) { $query = "update ".$this->db_name.".$table set $clause"; return $this->do_query($query); } function insert($table, $clause) { $query = "insert into ".$this->db_name.".$table $clause"; return $this->do_query($query); } function delete($obj, $table) { $query = "delete from ".$this->db_name.".$table where id=$obj->id"; return $this->do_query($query); } function delete_aux($table, $clause) { $query = "delete from ".$this->db_name.".$table where $clause"; return $this->do_query($query); } function insert_id() { return mysql_insert_id($this->db_conn); } function count($table, $clause) { $query = "select count(*) as total from ".$this->db_name.".$table where $clause"; $result = $this->do_query($query); $cnt = mysql_fetch_object($result); mysql_free_result($result); if ($cnt) return $cnt->total; return null; } function sum($table, $field, $clause="") { $query = "select sum($field) as total from ".$this->db_name.".$table $clause"; $result = $this->do_query($query); $cnt = mysql_fetch_object($result); mysql_free_result($result); if ($cnt) return (double)$cnt->total; return null; } function max($table, $field, $clause="") { $query = "select max($field) as total from ".$this->db_name.".$table $clause"; $result = $this->do_query($query); $cnt = mysql_fetch_object($result); mysql_free_result($result); if ($cnt) return (double)$cnt->total; return null; } function replace($table, $clause) { $query = "replace into ".$this->db_name.".$table set $clause"; return $this->do_query($query); } function base_escape_string($string) { return mysql_real_escape_string($string); } function base_error() { return mysql_error($this->db_conn); } function table_exists($table_name) { $result = $this->do_query("show tables from ".$this->db_name." like '$table_name'"); $t = mysql_fetch_array($result); mysql_free_result($result); if ($t[0] == "$table_name") return true; return false; } } ?>