Hi Torsten,
Bitte schaut nur einmal über meinen Code, ob das so richtig ist, oder ob man es anderes machen sollte. Ichh abe hier mein PHP Buch gewälzt, und bin mir trotzdem nicht ganz sicher.
Ich greife mal dedlfix Vorschlag auf: PDO
Untenstehend eine Basisklasse, aus welcher für sprezielle Aufgaben weitere Klassen abgeleitet werden können. Keine Angst vor OOP, Du kommst sowieso nicht dran vorbei ;)
Das Beispiel zeigt auch das Exception-Chaining. Deswegen ja auch eine eigene Klasse, weil es eine PDOException geben könnte (DB-Server wech) und in der eigenen Anwendungs-Klasse mit Exception gearbeitet wird; eine etwaige PDPException wird an die Klasse Exception 'durchgereicht'.
Beim Entwickeln ebenfalls hilfreich, Du siehst auch ewaige Syntaxfehler.
Viel Spaß, Hotti
<?php
// die neue PDO Basisklasse für MySQL
///////////////////////////////////////////////////////////////////////////
class MySQL{
protected $DBH;
public function __construct($cfg = array()){
try{
$this->dbh($cfg);
}
catch(PDOException $e){
throw new Exception($e->getMessage());
}
}
private function dbh($cfg){
$default = array(
'user' => '',
'pass' => '',
'host' => 'localhost',
'port' => 3306,
'base' => 'myweb',
);
$cred = array_merge($default, $cfg);
$this->DBH = new PDO(sprintf("mysql:dbname=%s;host=%s", $cred['base'], $cred['host']),
$cred['user'], $cred['pass'],
array(
PDO::ATTR_TIMEOUT => 2,
PDO::ATTR_PERSISTENT => true,
));
$this->DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
///////////////////////////////////////////////////////////////////////////
/* Testbereich */
// Der Connect könnte eine Exception werfen, also auffangen
try{
$pdo = new MySQL (array('host' => 'roro'));
echo "DB-Verbindung OK\n", print_r($pdo,1);
}
catch(Exception $e){
echo "Fehler/Exception: ", $e->getMessage();
}
/* Testbereich Ende */
return;
?>