Project

General

Profile

1
<?php
2

    
3
// $Id: class.database.php 286 2006-01-23 21:15:10Z stefan $
4

    
5
/*
6

    
7
 Website Baker Project <http://www.websitebaker.org/>
8
 Copyright (C) 2004-2005, Ryan Djurovich
9

    
10
 Website Baker is free software; you can redistribute it and/or modify
11
 it under the terms of the GNU General Public License as published by
12
 the Free Software Foundation; either version 2 of the License, or
13
 (at your option) any later version.
14

    
15
 Website Baker is distributed in the hope that it will be useful,
16
 but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 GNU General Public License for more details.
19

    
20
 You should have received a copy of the GNU General Public License
21
 along with Website Baker; if not, write to the Free Software
22
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23

    
24
*/
25

    
26
/*
27

    
28
Database class
29

    
30
This class will be used to interface between the database
31
and the Website Baker code
32

    
33
*/
34

    
35
// Stop this file from being accessed directly
36
if(!defined('WB_URL')) {
37
	header('Location: ../index.php');
38
	exit(0);
39
}
40

    
41
if(!defined('DB_URL')) {
42
	//define('DB_URL', DB_TYPE.'://'.DB_USERNAME.':'.DB_PASSWORD.'@'.DB_HOST.'/'.DB_NAME);
43
}
44

    
45
define('DATABASE_CLASS_LOADED', true);
46

    
47
class database {
48
	
49
	// Set DB_URL
50
	function database($url = '') {
51
		// Connect to database
52
		$this->connect();
53
		// Check for database connection error
54
		if($this->is_error()) {
55
			die($this->get_error());
56
		}
57
	}
58
	
59
	// Connect to the database
60
	function connect() {
61
		$status = $this->db_handle = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
62
		if(mysql_error()) {
63
			$this->connected = false;
64
			$this->error = mysql_error();
65
		} else {
66
			if(!mysql_select_db(DB_NAME)) {
67
				$this->connected = false;
68
				$this->error = mysql_error();
69
			} else {
70
				$this->connected = true;
71
			}
72
		}
73
		return $this->connected;
74
	}
75
	
76
	// Disconnect from the database
77
	function disconnect() {
78
		if($this->connected==true) {
79
			mysql_close();
80
			return true;
81
		} else {
82
			return false;
83
		}
84
	}
85
	
86
	// Run a query
87
	function query($statement) {
88
		$mysql = new mysql();
89
		$mysql->query($statement);
90
		if($mysql->error()) {
91
			$this->set_error($mysql->error());
92
			return null;
93
		} else {
94
			return $mysql;
95
		}
96
	}
97
	
98
	// Gets the first column of the first row
99
	function get_one($statement) {
100
		$fetch_row = mysql_fetch_row(mysql_query($statement));
101
		$result = $fetch_row[0];
102
		if(mysql_error()) {
103
			$this->set_error(mysql_error());
104
			return null;
105
		} else {
106
			return $result;
107
		}
108
	}
109
	
110
	// Set the DB error
111
	function set_error($message = null) {
112
		global $TABLE_DOES_NOT_EXIST, $TABLE_UNKNOWN;
113
		$this->error = $message;
114
		if(strpos($message, 'no such table')) {
115
			$this->error_type = $TABLE_DOES_NOT_EXIST;
116
		} else {
117
			$this->error_type = $TABLE_UNKNOWN;
118
		}
119
	}
120
	
121
	// Return true if there was an error
122
	function is_error() {
123
		return (!empty($this->error)) ? true : false;
124
	}
125
	
126
	// Return the error
127
	function get_error() {
128
		return $this->error;
129
	}
130
	
131
}
132

    
133
class mysql {
134

    
135
	// Run a query
136
	function query($statement) {
137
		$this->result = mysql_query($statement);
138
		$this->error = mysql_error();
139
		return $this->result;
140
	}
141
	
142
	// Fetch num rows
143
	function numRows() {
144
		return mysql_num_rows($this->result);
145
	}
146
	
147
	// Fetch row
148
	function fetchRow() {
149
		return mysql_fetch_array($this->result);
150
	}
151
	
152
	// Get error
153
	function error() {
154
		if(isset($this->error)) {
155
			return $this->error;
156
		} else {
157
			return null;
158
		}
159
	}
160

    
161
}
162

    
163
?>
(2-2/11)