MySQL Klasse für PHP Anwendungen
Erstellt am 30.10.2008 um 22:43 Uhr von sim4000
Hier möchte ich meine MySQL Verbindungsklasse vorstellen. Diese beinhaltet einige praktische Funktionen zum handling von MySQL Verbindungen.
Inhalte dieses Artikels
Die Klasse
Hier nun einmal die Komplette Klasse mit Kommentaren.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | /** * Aufbauen einer mysql Verbindung * @author Christian Blechert * @since 06/2008 */ class mysqlClass { private $connection; // Link Ressource private $database; // DB Handler private $enc; // Encoding static $counter = 0; // Query Counter /** * @param String host Hostname des mysql Servers * @param String user Benutzername * @param String password Passwort zum Benutzer * @param String database Zu benutzende Datenbank * @param String enc Zeichenkodierung */ function __construct($host, $user, $password, $database, $enc="utf8") { $this->connection = 0; $this->database = 0; $this->enc = $enc; $this->mysqlConnect($host, $user, $password, $database, $enc); // Verbindung herstellen } /** * Verbindung bei Vernichten der Klasse trennen */ function __destruct() { $this->mysqlDisconnect(); // Trennen } /** * Verbindung herstellen * @param String host Hostname des mysql Servers * @param String user Benutzername * @param String password Passwort zum Benutzer * @param String database Zu benutzende Datenbank * @param String enc Zeichenkodierung */ function mysqlConnect($host, $user, $password, $database, $enc="utf8") { if($this->connection!=0) $this->mysqlDisconnect(); if($this->connection = @mysql_connect($host, $user, $password)) { if($this->database = @mysql_select_db($database, $this->connection)) { @mysql_query("SET NAMES '".$enc."'"); } } if(mysql_errno($this->connection)) die(mysql_error($this->connection)); } /** * Verbindung trennen */ function mysqlDisconnect() { @mysql_close($this->connection); if(!mysql_errno()) { $this->connection=0; $this->database=0; } else { die(mysql_errno().": ".mysql_error()); } } /** * mySQL Statement absetzen * @param String query MySQL Statement * @return Resource ResultSet des Statements */ function mysqlQuery($query, $die=true) { $result = mysql_query($query); if(mysql_errno($this->connection)) { if($die) die(mysql_errno($this->connection).": ".mysql_error($this->connection)); } else { mysqlClass::$counter = mysqlClass::$counter+1; } return $result; } /** * Liefert die Anzahl der betroffenen Zeilen Zurueck * @return int */ function mysqlAffectedRows() { return @mysql_affected_rows($this->connection); } /** * Liefert das result eines Statements in einem 2 Dimensionalen Array * @param String query MySQL Statement * @return Array[][] result */ function mysqlArray($query) { $i=0; $result = $this->mysqlQuery($query); while($row=mysql_fetch_array($result)) { for($j=0; $j<sizeof($row); $j++) { $array[$i][@mysql_field_name($result, $j)] = $row[$j]; } $i++; } $return[0] = mysql_num_rows($result); $return[1] = mysql_num_fields($result); $return[2] = $array; return $return; } /** * Verkuerzte Version von mysql_real_escape_string() * @param String query Wert zum Escapen * @return String der Escaped String */ function sqlij($string) { return mysql_real_escape_string($string); } /** * Liefert den aktuellen Stand des Query Counter * @return int Wert */ function getNumQuerys() { return mysqlClass::$counter; } /** * Liefert die Zeichenkodierung * @return String */ function getEnc() { return $this->enc; } /** * Gibt falls vorhanden den MySQL Error zuruech * @return String */ function getSQLError() { return mysql_error($this->connection); } /** * Gibt falls vorhanden den Fehler Codes des Errors zurueck * @return int */ function getSQLErrno() { return mysql_errno($this->connection); } /** * Liefert die ID des letzten insert Befehls * @return int */ function getInsertID() { return mysql_insert_id($this->connection); } } |
Beim Initialisieren der Klasse, werden die Zugansdaten sie der Datenbankname und der Zeichensatz übergeben. Der Zeichensatz ist hierbei optional. Falls keiner angegeben wird, wird UTF-8 verwendet.
Die Methoden mysqlArray() und mysqlQuery() bilden hierbei die Hauptmethoden. mysqlArray() wird ein Statement übergeben. Die Methode gibt dann falls es ein Ergebnis gibt, als drei bzw zwei Dimensionales Array zurück. mysqlQuery() hingegen funktioniert genau so wie die Standard Function mysql_query() die PHP mitbringt.




