|
|
User gesamt
|
:
|
2389653
|
User online
|
:
|
3
|
|
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
|
|
|
|
MyWebsolution.de Foren » Entwicklungsforum » einfache mysql klasse
Seite:
|
1
|
Posts pro Seite: 5
10
20
|
Autor
|
Thread
|
20.01.2007 01:42 Uhr
|
einfache mysql klasse
|
Negura
|
Forenposter
|
|
registriert
|
06.12.2006
|
wohnt in
|
|
Beiträge
|
57
|
|
PHP:
<?
/* Die Verbindungsklasse mit folgenden Methoden:
1: createConnection($host, $user, $password, $database)
2: disconnect()
3: query($abfrage)
4: fetch()
*/
class cConnection
{
private $_connection = NULL;
private $_resource = NULL;
// Stellt eine Verbindung zum Datenbankserver her
public function createConnection($hostname, $username, $password, $database)
{
$this->_connection = @mysql_connect($hostname, $username, $password);
if(is_resource($this->_connection))
{
@mysql_select_db($database, $this->_connection);
}
else
{
throw new Exception('Es konnte keine Verbindung hergestellt werden');
unset($this->_connection);
}
}
// Schließt die Verbindung zum Datenbankserver
public function disconnect()
{
if(is_resource($this->_connection))
{
if(mysql_close($this->_connection))
{
unset($this->_connection);
}
else
{
throw new Exception('Verbindung konnte nicht geschlossen werden');
}
}
}
// Stellt eine Anfrage an den Server
public function query($query)
{
if(is_resource($this->_connection) && is_string($query) && ($query != ""))
{
if(is_resource($this->_resource))
{
mysql_free_result($this->_resource);
}
$result = @mysql_query($query, $this->_connection);
if(is_resource($result))
{
$this->_resource = $result;
}
else
{
throw new Exception('Datenbankanfrage fehlgeschlagen!');
}
}
else
{
throw new Exception('Bitte Parametertyp überprüfen');
}
}
// Verarbeitet das Ergebnisarray
public function fetch()
{
if(is_resource($this->_resource))
{
$row = mysql_fetch_assoc($this->_resource);
if(is_array($row))
{
return $row;
}
else
{
throw new Exception('Resource konnte nicht verarbeitet werden');
}
}
}
};
// Instanz erstellen
$Verbindung = new cConnection;
// Methoden aufrufen
try
{
$Verbindung->createConnection("localhost", "root", "password", "datenbank");
$Verbindung->query("SELECT * FROM tab_test");
$row = $Verbindung->fetch();
echo $row['SpaltenName'];
}
catch(Exception $e) // Geworfene Exceptions auswerten
{
echo '<strong>Fehler: </strong>' . $e->getMessage();
}
?>
|
|
|
16.02.2007 14:33 Uhr
|
|
Negura
|
Forenposter
|
|
registriert
|
06.12.2006
|
wohnt in
|
|
Beiträge
|
57
|
|
Ein paar neue methode für die obige Klasse
PHP:
// Diese Methode gibt die Anzahl der Datensätze in der Tabelle zurück
public function getData($tablename)
{
if((is_string($tablename)) && ($tablename != ""))
{
$result = mysql_query("SELECT * FROM " . $tablename);
if(is_resource($result))
{
return mysql_num_rows($result);
}
else
{
throw new Exception('Anfrage konnte nicht verarbeitet werden');
}
}
else
{
throw new Exception('Falsche Parameterübergabe');
}
}
// Diese Methode gibt alle Tabellen der aktuellen Datenbank zurück
public function getTables()
{
$j = 0;
$tables = array();
$result = @mysql_list_tables($this->_database, $this->_connection);
if(is_resource($result))
{
while($row = @mysql_fetch_array($result))
{
$tables[$j] = $row[0];
$this->_table = $tables[$j];
$j++;
}
return $tables;
}
else
{
throw new Exception('Es konnten keine Tabellen gefunden werden, da keine Datenbank selektiert wurde.');
}
}
// Diese Methiode gibt alle Felder eine Tabelle zurück
public function getFields($tablename)
{
if(!$result = mysql_list_fields($this->_database, $tablename))
{
throw new Exception('Die Felder konnten nicht ermittelt werden.');;
}
else
{
$cnt = 0;
$fields = array();
}
if($field = mysql_num_fields($result))
{
for($j=0; $j < $field; $j++)
{
$fields[$cnt] = mysql_field_name($result, $cnt);
$cnt++;
}
}
else
{
throw new Exception('Die Anzahl der Felder konnte nicht ermittelt werden');
}
return $fields;
}
// Diese Methode ändert die Datenbank
public function setDatabase($database)
{
if(isset($this->_connection))
{
if((is_string($database)) && ($database != ""))
{
if(mysql_select_db($database, $this->_connection))
{
$this->_database = $database;
}
else
{
throw new Exception('Die Datenbank konnte nicht ausgewählt werden');
}
}
else
{
throw new Exception('Es wurde eine ungültige Datenbankbezeichnung übergeben');
}
}
else
{
throw new Exception('Es besteht keine Verbindung zum Server, bitte verwenden Sie "createConnection"');
}
}
Ein kleines Biespiel, was jedes Feld von jeder Tabelle der aktuellen Datenbank auflistet.
PHP:
// Instanz erstellen
$Verbindung = new cConnection;
// Methoden aufrufen
try
{
$Verbindung->createConnection("localhost", "root", "password", "datenbank");
$tabs = $Verbindung->getTables();
$x=0;
do
{
echo "<b>Felder von Tabelle:</b> " . $tabs[$x] . ' (' . $Verbindung->getData($tabs[$x]) . ' Datensätze) <br />';
$j=0;
do
{
$field = $Verbindung->getFields($tabs[$x]);
echo ' - <b>Feld:</b> ' . $field[$j] . '<br />';
$j++;
}
while($field[$j] != "");
$x++;
}
while($tabs[$x] != "");
}
catch(Exception $e) // Geworfene Exceptions auswerten
{
echo '<strong>Fehler: </strong>' . $e->getMessage();
}
|
|
|
13.02.2009 15:49 Uhr
|
|
Nuc
|
User
|
|
registriert
|
13.02.2009
|
wohnt in
|
|
Beiträge
|
6
|
|
Dieses Skript ist in der Praxis völlig untauglich....
Man könnte damit höchstens die Datenbankkapazität testen.....
Schau mal du hast eine Datenbank mit 20, 30 Tabellen und die Tablle die du auswähst hat wieder 20 Felder wenn jetzt 1000 Besucher auf die Seite kommen
Dieses Skript verbraucht dermaßen viel Kapazität.
Mach es so:
Code:
//Validiert den MySQL Query und führt ihn je nach Art aus
//Param $query = string - Der auszuführende Query
//Return = ? - Gibt die Returns von den Functionen weiter
public function execute($query) {
if(strtolower(substr($query,0,6)) == "select") return $this->select($query);
elseif(strtolower(substr($query,0,6)) == "update") return $this->update($query);
elseif(strtolower(substr($query,0,6)) == "insert") return $this->insert($query);
elseif(strtolower(substr($query,0,6)) == "delete") return $this->delete($query);
else $this->error("Unknown MySQL Query");
}
//Führt einen MySQL Query aus
//Param $query = string - Der auszuführende Query
//Return = object - Das Result das die Datenbank zurückgibt
public function query($query) {
if(!mysql_ping($this->conn)) $this->error("CONNECTION LOST");
$this->currquery = $query;
$res = mysql_query($query) OR $this->error();
return $res;
}
//Gibt das SELECT Result als array zurück
//Param $query = string - Der auszuführende SELECT Query
//Return = array - Die Antwort des MySQL Servers in Form eines arrays
public function select($query) {
$array = array();
$result = $this->query($query);
$anzahl = mysql_num_rows($result);
if($anzahl) {
while($row = mysql_fetch_array($result)) {
$array[] = $row;
}
}
return $array;
}
und dann führe den Code so aus:
Code:
$sql = "SELECT Feld, Feld, Feld FROM Tabelle"; ///NIE *
$arraysql = $GLOBALS['mysql']->execute($sql);
for($i=0;$i<count($arraysql);$i++) {
echo "{$arraysql[$i]['Feld']}";
So das geht aber nicht der Code ist nicht vollständig ist nur als Tipp
|
|
|
04.05.2010 20:50 Uhr
|
|
Basi
|
User
|
|
registriert
|
03.05.2010
|
wohnt in
|
Deutschland
|
Beiträge
|
6
|
|
Du kannst doch nicht in deiner connection Klasse auch schon die Datenbank anwählen, was wenn man später noch eine andere Datenbank anwählen muss? Dann muss man neu connecten, das müssen unbedingt 2 Methoden sein.
|
|
|
Seite:
|
1
|
|
|
Powered by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
Designed by
|
Pascal Landau
|
© 2006
|
MyWebsolution.de
|
|
|
|
|
|