hallo,
ich habe für eine Webseite, auf der ein großer Teil AJAX verwendet wird,
eine Klasse geschrieben, die eine Verbindung mit einer mysql Datenbank aufbaut, die verbindungs ressource in die Klassenvariable $conn schreibt. Diese klasse stellt auch methoden zur verfügung, um einige mysql befehle auszuführen, damit man nichtmehr direkt mit SQL zu tun hat.
Damit man pro Besucher auf der Seite nur eine mysql verbinding hat, und nicht mit jedem mal, wenn der user auf einen Button klickt, eine neue Verbindung aufgebaut werden muss, will ich das Objekt, das ich aus der Klasse erzeuge in eine Session Variable schreiben und dann in den anderen Dateien eben dieses Objekt weiter verwenden. Das klappt in der Praxis jedoch nicht so ganz.
Wenn ich das Objekt direkt in die Session variable erzeuge:
und dann in einer anderen Datei wieder benutze:
bekomm ich vom PHP Parser das zurück:
die Ausgabe von var_dump an der Stelle, wo das objekt erzeugt wird ist:
und in dem Script, das von dem AJAX request aufgerufen wird ist sie:
Weder die Google Suche noch eine Suche hier haben mich weitergebracht.
Mache ich etwas falsch? Geht das nicht so, wie ich das will, oder seht ihr einen Fehler meinerseits?
mfg
mupilz
ich habe für eine Webseite, auf der ein großer Teil AJAX verwendet wird,
eine Klasse geschrieben, die eine Verbindung mit einer mysql Datenbank aufbaut, die verbindungs ressource in die Klassenvariable $conn schreibt. Diese klasse stellt auch methoden zur verfügung, um einige mysql befehle auszuführen, damit man nichtmehr direkt mit SQL zu tun hat.
Damit man pro Besucher auf der Seite nur eine mysql verbinding hat, und nicht mit jedem mal, wenn der user auf einen Button klickt, eine neue Verbindung aufgebaut werden muss, will ich das Objekt, das ich aus der Klasse erzeuge in eine Session Variable schreiben und dann in den anderen Dateien eben dieses Objekt weiter verwenden. Das klappt in der Praxis jedoch nicht so ganz.
Wenn ich das Objekt direkt in die Session variable erzeuge:
PHP-Code:
<?php
// der Code Schnipsel ist in einer Datei drin, die beim ersten aufruf der Seite ausgeführt wird, um die komplette Seite zu generieren
if (class_exists("Db"))
{
$_SESSION['db'] = new Db();
$_SESSION['db']->init(); // DB::init() stellt die verbindung zur Datenbank her und speichert die verbindungsressource in der Klassenvariable $conn
}
else
{
$okay = false;
}
?>
PHP-Code:
<?php
// andere Datei, sie wird von einem AJAX request aufgerufen
require_once "../include/db.php.inc";
require_once "../include/log.php.inc";
session_start();
$content = $_SESSION['db']->select("pages", false, array("page"=>$page));
?>
Code:
Warning: mysql_query() expects parameter 2 to be resource, integer given in /var/www/kazecms/include/db.php.inc on line 84
Code:
object(Db)#3 (1) { ["conn"]=> resource(4) of type (mysql link) }
Code:
object(Db)#1 (1) { ["conn"]=> int(0) }
Mache ich etwas falsch? Geht das nicht so, wie ich das will, oder seht ihr einen Fehler meinerseits?
mfg
mupilz
Kommentar