Rev Author Line No. Line
1 paul 1 <?php
2 /******************************************************************************
3  * Database Abstraction Class
4  * DB Type: MySQL
5  * (C) Paul Clement 2007
6  *
7  * Usage: $DB = new DataBase('Host', 'User', 'Password', 'DB');
8  ******************************************************************************/
9  
10 class DataBase
11 {
12         // Connection Variable
13         public $Connection;
14  
15         // Initialise Connection       
16         function __construct($DBHost, $DBUser, $DBPass, $DBName)
17         {
18                 // Attempt Connection
19                 $this->Connection = @mysql_connect($DBHost, $DBUser, $DBPass);
20  
21                 // Verify Connection
22                 if ( !$this->Connection )
23                 {
24                         // Throw Error
25                         trigger_error("MySQL Error " . mysql_errno() . ": " . mysql_error(), E_USER_WARNING);
26                         return false;
27                         exit();
28                 }
29  
30                 // Select Database
31                 $Select = @mysql_select_db($DBName, $this->Connection);
32  
33                 // Verify Selection
34                 if ( !$Select )
35                 {
36                         // Throw Error
37                         trigger_error("MySQL Error " . mysql_errno($this->Connection) . ": " . mysql_error($this->CONNECTION_ABORTED), E_USER_WARNING);
38                         return false;
39                         exit();
40                 }
41  
42                 // Return true
43                 return true;
44         }
45  
46         // Execute SQL Command
47         function ExecuteSQL($SQLCommand)
48         {
49                 // Query Database
50                 $Query = mysql_query($SQLCommand, $this->Connection);
51  
52                 // Verify Query
53                 if ( mysql_error($this->Connection) )
54                 {
55                         // Throw Error
56                         trigger_error("MySQL Error " . mysql_errno($this->Connection) . ": " . mysql_error($this->Connection), E_USER_WARNING);
57                         return false;
58                         exit();
59                 }
60  
61                 // Return true
62                 return $Query;
63         }
64  
65         //  Get Data Set
66         function GetDataSet($SQLCommand)
67         {
68                 // Create Return Variable
69                 $DataSet = array();
70  
71                 // Query Database
72                 $Query = $this->ExecuteSQL($SQLCommand);
73  
74                 // Add returned rows to array
75                 while ( $DataRow = mysql_fetch_array($Query, MYSQL_ASSOC) )
76                 {
77                         $DataSet[] = $DataRow;
78                 }
79  
80                 // Return DataSet
81                 return $DataSet;
82         }
83  
84         // Get Data Row
85         function GetDataRow($SQLCommand)
86         {
87                 // Get Data Set
88                 $DataSet = $this->GetDataSet($SQLCommand);
89  
90                 // Check that a row exists
91                 if ( count ( $DataSet ) == 0 )
92                 {
93                         trigger_error("GetDataRow: No rows returned!", E_USER_NOTICE);
94                         return false;
95                         exit();
96                 }
97  
98                 // Return first row from dataset
99                 return $DataSet[0];
100         }
101  
102         // Insert Row
103         function InsertRow($TableName, $ValuesArray)
104         {
105                 // Initialise Variables
106                 $i = 1;
107                 $Columns = "";
108                 $Values = "";
109  
110                 // Count Items
111                 $numItems = count($ValuesArray);
112  
113                 // Loop through $ValuesArray
114                 foreach ( $ValuesArray As $ColumnName => $Value )
115                 {
116                         $Values .= "'" . addslashes($Value) . "'";
117                         $Columns .= $ColumnName;
118  
119                         // If not last entry
120                         if ( $i != $numCols )
121                         {
122                                 // Add Seperators
123                                 $Values .= ", ";
124                                 $Columns .= ", ";
125                         }
126  
127                         // Increment i
128                         $i++;
129                 }
130  
131                 // Build SQL Statement
132                 $SQL = "INSERT INTO " . $TableName ." ( " . $Columns . " ) VALUES ( " . $Values . " )";
133  
134                 // Execute Query
135                 return $this->ExecuteSQL($SQL);
136         }
137  
138         // Delete Row(s)
139         function DeleteRow($TableName, $WhereArray)
140         {
141                 // Set up variables
142                 $i = 1;
143                 $Values = "";
144                 $Columns = "";
145  
146                 // Count number of items
147                 $numCols = count($WhereArray);
148  
149                 // Start SQL Statement
150                 $SQL = "DELETE FROM " . $TableName . " WHERE ";
151  
152                 // Loop through $whereArray
153                 foreach ( $WhereArray As $ColumnName => $Value )
154                 {
155                         $SQL .= $ColumnName . " = '" . addslashes($Value) . "'";
156  
157                         // If not last entry
158                         if ( $i != $numCols )
159                         {
160                                 // Add Seperators
161                                 $SQL .= " AND ";
162                         }
163  
164                         // Increment i
165                         $i++;
166                 }
167  
168                 // Execute SQL Command
169                 return $this->ExecuteSQL($SQL);
170         }
171  
172         // Update Row
173         function UpdateRow($TableName, $ValuesArray, $WhereArray)
174         {
175                 // Set up variables
176                 $i = 1;
177                 $UpdateValues = "";
178                 $UpdateColumns = "";
179                 $WhereValues = "";
180                 $WhereColumns = "";
181  
182                 // Set counts
183                 $whereCount = count($WhereArray);
184                 $valueCount = count($ValuesArray);
185  
186                 // Start SQL String
187                 $SQL = "UPDATE " . $TableName . " SET ";
188  
189                 // Loop through $ValuesArray
190                 foreach ( $ValuesArray As $Column => $Value )
191                 {
192                         $SQL .= $Column . " = '" . addslashes($Value) . "'";
193  
194                         // If not last entry
195                         if ( $i != $valueCount )
196                         {
197                                 // Add Seperators
198                                 $SQL .= ", ";
199                         }
200  
201                         // Increment i
202                         $i++;
203                 }
204  
205                 if ( $whereCount != 0 )
206                 {
207                         $SQL .= " WHERE ";
208  
209                         $i = 1;
210                         // Loop through $WhereArray
211                         foreach ( $WhereArray As $Column => $Value )
212                         {
213                                 $SQL .= $Column . " = '" . $Value . "'";
214  
215                                 // If not last entry
216                                 if ( $i != $whereCount )
217                                 {
218                                         // Add Seperators
219                                         $SQL .= " AND ";
220                                 }
221  
222                                 // Increment i
223                                 $i++;
224                         }
225                 }
226  
227                 // Execute SQL Command
228                 return $this->ExecuteSQL($SQL);
229         }
230 }
231 ?>