chrisbergr
Erfahrenes Mitglied
Hallo Forum,
ich habe da, wie es der Titel schon verrät, ein kleines Problem mit PHP im Zusammenspiel mit PEAR. Bewusst bitte ich hier um Hilfe und nicht im offiziellen PEAR-Forum, da es mir in deutsch leicher fällt und hier ja einige kompetente Leute rumschwirren.
Aber genug davon. In einer Klasse habe ich eine Funktion, in der ich mittels der PEAR DB Klasse eine DB Abfrage machen möchte. Funktioniert nicht, mir wird der folgende PHP-Error angezeigt. Wenn ich das ganze nicht in dieser Klasse aufrufe, funktioniert alles reibungsloß.
Normalerweise kann ich mit diesem Fehler ja etwas anfangen, aber in dem Fall verstehe ich es nicht.
Ich poste hier einmal den Ansatz, der funktioniert:
Wie gesagt, funktioniert super. Im nächsten Beispiel klappt es allerdings nicht mehr, da erhalte ich dann oben genannten Fehler.
index.php:
objects.inc.php:
So, zum einen hoffe ich, ihr werdet aus dem geschriebenen schlau, und zum anderen doch sehr, dass mir jemand mein Problem zum besseren Verständniss erklären kann und Lößungsansätze mitteilen.
Vielen Dank im Vorraus.
//Christian
ich habe da, wie es der Titel schon verrät, ein kleines Problem mit PHP im Zusammenspiel mit PEAR. Bewusst bitte ich hier um Hilfe und nicht im offiziellen PEAR-Forum, da es mir in deutsch leicher fällt und hier ja einige kompetente Leute rumschwirren.
Aber genug davon. In einer Klasse habe ich eine Funktion, in der ich mittels der PEAR DB Klasse eine DB Abfrage machen möchte. Funktioniert nicht, mir wird der folgende PHP-Error angezeigt. Wenn ich das ganze nicht in dieser Klasse aufrufe, funktioniert alles reibungsloß.
Code:
Fatal error: Call to undefined method DB::query() in [...]\objects.inc.php on line 113
Normalerweise kann ich mit diesem Fehler ja etwas anfangen, aber in dem Fall verstehe ich es nicht.
Ich poste hier einmal den Ansatz, der funktioniert:
PHP:
require_once 'DB.php';
include_once ("../inc/config.inc.php");
if (!defined('DSN')) {
define(DSN,$db_type.'://'.$db_user.':'.$db_passwd.'@'.$db_host.'/'.$db_name);
}
$dboptions = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
'ssl' => true,
);
$db =& DB::connect(DSN, $dboptions);
if (PEAR::isError($db)) {
die($db->getMessage());
}
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$check_sql = 'SELECT id'
. ' FROM '.db_Var.'user'
. ' WHERE usr = ?'
. ' LIMIT 0,1';
$check_data = array($username);
$check_res =& $db->query($check_sql, $check_data);
while ($check_res->fetchInto($row)) {
[...]
}
Wie gesagt, funktioniert super. Im nächsten Beispiel klappt es allerdings nicht mehr, da erhalte ich dann oben genannten Fehler.
index.php:
PHP:
require_once 'DB.php';
include_once ("inc/config.inc.php");
$db = new DB();
if (!defined('DSN')) {
define(DSN,$db_type.'://'.$db_user.':'.$db_passwd.'@'.$db_host.'/'.$db_name);
}
$dboptions = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
'ssl' => true,
);
$db =& DB::connect(DSN, $dboptions);
if (PEAR::isError($db)) {
die($db->getMessage());
}
$db->setFetchMode(DB_FETCHMODE_ASSOC);
include ("inc/objects.inc.php");
$User = new User();
echo $User->Privacy($what,$from,$logintmp,$who,$rank);
objects.inc.php:
PHP:
class User {
function Privacy($what,$from,$logintmp,$who,$rank) {
//[...]
$sqlf1 = 'SELECT ?'
. ' FROM '.db_Var.'user_options'
. ' WHERE id = ?'
. ' LIMIT 0,1';
$dataf1 = array($what,$from);
$resuf1 =& DB::query($sqlf1, $dataf1); // HIER IST DER FEHLER (mit $db->query() habe ich es auch schon versucht)
if (DB::isError($resuf1)) {
//[...]
} else {
while ($resuf1->fetchInto($row)) {
//[...]
}
}
}
return $authorisation;
}
}
So, zum einen hoffe ich, ihr werdet aus dem geschriebenen schlau, und zum anderen doch sehr, dass mir jemand mein Problem zum besseren Verständniss erklären kann und Lößungsansätze mitteilen.
Vielen Dank im Vorraus.
//Christian
Zuletzt bearbeitet: