Ahoi,
ich bin gerade dabei ein kleines Projekt auf PDO umzustellen (ich habe vorher eine externe Datenbankklasse verwendet, möchte diese aber gern loswerden).
Mein erster Versuch war die Einbindung genauso wie meine Datenbankklasse davor, d.h. ich habe in jeder Klasse eine Datei mit den PDO Verbindungsdetails mit require eingebunden und anschließend die PDO Verbindung in eine Klassenvariable ($db) übergeben. In meinen Funktionen wollte ich dann über $this->db darauf zugreifen. Das schien zu funktionieren ich habs in 3 Funktionen eingebaut wieder ein bisschen rumgetestet und kam bei der Fehlermeldung an:
"PDOException: You cannot serialize or unserialize PDO instances "
Ich muss zugeben zu 100% verstehe ich diese Fehlermeldung nicht, ich ging davon aus, dass es mit der Speicherung als Klassenvariable zusammenhing. (Liege ich da richtig?)
Habe das jetzt so umgebastelt, dass ich eine pdoConnect()-Funktion habe und mit dieser in jeder Funktion eine eigene (neue?) Verbindung aufbaue. (Die Funktion returned ein PDO-Objekt, am Anfang jeder Funktion die die Datenbank braucht, rufe ich einmal "pdoConnect()" auf.)
Ist das die "richtige" vorgehensweise?
Wäre es nicht sinnvoller eine Verbindung zu nutzen und diese immer weiterzugeben? Wenn ja wie realisiert man das im normalfall?
Liebe Grüße
ChromOxid
edit: Ist es normal, dass mir beim kopieren von PHP Code jegliche Formatierung verloren geht? Hatte es erst mit einfach nur abschicken versucht, das ergab einen einzeiligen PHP-Code, habe das gerade dann manuell einigermaßen geradegerückt.
ich bin gerade dabei ein kleines Projekt auf PDO umzustellen (ich habe vorher eine externe Datenbankklasse verwendet, möchte diese aber gern loswerden).
Mein erster Versuch war die Einbindung genauso wie meine Datenbankklasse davor, d.h. ich habe in jeder Klasse eine Datei mit den PDO Verbindungsdetails mit require eingebunden und anschließend die PDO Verbindung in eine Klassenvariable ($db) übergeben. In meinen Funktionen wollte ich dann über $this->db darauf zugreifen. Das schien zu funktionieren ich habs in 3 Funktionen eingebaut wieder ein bisschen rumgetestet und kam bei der Fehlermeldung an:
"PDOException: You cannot serialize or unserialize PDO instances "
Ich muss zugeben zu 100% verstehe ich diese Fehlermeldung nicht, ich ging davon aus, dass es mit der Speicherung als Klassenvariable zusammenhing. (Liege ich da richtig?)
Habe das jetzt so umgebastelt, dass ich eine pdoConnect()-Funktion habe und mit dieser in jeder Funktion eine eigene (neue?) Verbindung aufbaue. (Die Funktion returned ein PDO-Objekt, am Anfang jeder Funktion die die Datenbank braucht, rufe ich einmal "pdoConnect()" auf.)
PHP-Code:
function pdoConnect()
{
$db_username = 'xxx';
$db_pw = 'xxx';
$db_dsn = 'mysql:host=localhost;dbname=woh;charset=utf8';
$db_options = array( PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
return new PDO($db_dsn, $db_username, $db_pw, $db_options);
}
Wäre es nicht sinnvoller eine Verbindung zu nutzen und diese immer weiterzugeben? Wenn ja wie realisiert man das im normalfall?
Liebe Grüße
ChromOxid
edit: Ist es normal, dass mir beim kopieren von PHP Code jegliche Formatierung verloren geht? Hatte es erst mit einfach nur abschicken versucht, das ergab einen einzeiligen PHP-Code, habe das gerade dann manuell einigermaßen geradegerückt.


Kommentar