Ich habe die folgenden Klassen
und
Dazu folgende Datei, wo das aufgerufen wird:
darunter steht nur der HTML Code mit der Tabelle. Wenn ich dort den Button klicke, kommt folgende Ausgabe:
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\battle_final\classes\class_userManagement.php on line 49
Könnt ihr mir sagen, wo mein Fehler liegt?
PHP:
<?php
class DB
{
//Datenbankdaten
private $DB=array('database'=>'battle',
'user'=>'root',
'password'=>'****');
protected $dbh;
public function __construct()
{
parent::__construct();
//ConnectString
$con="mysql:dbname=".$this->DB['database'].
";host=localhost";
try
{
//Verbindung herstellen
$dbh=new PDO($con, $this->$DB['user'], $this->$DB['password']);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (Exception $e)
{
}
}
public function __destruct()
{
//Verbindung zerstören
$dbh=null;
}
}
und
PHP:
<?php
require 'classes/class_DB.php';
class userManagement extends DB
{
public $dbh;
public function __construct(&$dbh)
{
if(is_object($dbh) && ($dbh instanceof PDO))
$this->dbh=$dbh;
}
public function add($daten)
{
//Daten eintragen
if(!is_array($daten)) return false;
try
{
$sql="INSERT INTO user(u_uname,
u_password,
u_email,
u_vname,
u_nname,
u_plz,
u_ort,
u_strasse,
u_hnr,
u_geb_tag,
u_geb_mon,
u_geb_jahr,
u_code,
u_aktiv)
VALUES(:user,
:password,
:email,
:vname,
:nname,
:plz,
:ort,
:strasse,
:hnr,
:geb_tag,
:geb_mon,
:geb_jahr,
:code,
:aktiv)";
$result=$this->dbh->prepare($sql);
$result->bindParam(':user', $daten['uname'], PDO::PARAM_STR,36);
$result->bindParam(':password', $daten['pw'], PDO::PARAM_STR,32);
$result->bindParam(':email', $daten['email'], PDO::PARAM_STR,60);
$result->bindParam(':vname', $daten['vname'], PDO::PARAM_STR,40);
$result->bindParam(':nname', $daten['nname'], PDO::PARAM_STR,32);
$result->bindParam(':plz', $daten['plz'], PDO::PARAM_STR,6);
$result->bindParam(':ort', $daten['ort'], PDO::PARAM_STR,32);
$result->bindParam(':strasse', $daten['str'], PDO::PARAM_STR,32);
$result->bindParam(':hnr', $daten['hnr'], PDO::PARAM_STR,7);
$result->bindParam(':geb_tag', $daten['geb_tag'], PDO::PARAM_STR,2);
$result->bindParam(':geb_mon', $daten['geb_mon'], PDO::PARAM_STR,2);
$result->bindParam(':geb_jahr', $daten['geb_jahr'], PDO::PARAM_STR,4);
$result->bindParam(':code', md5($daten['email'], time()), PDO::PARAM_STR,32);
$result->bindParam(':aktiv', '0', PDO::PARAM_STR,1);
$result->execute();
if($result->rowCount()==1)
{
print"Datensatz wurde eingetragen";
return true;
}
else
return false;
}
catch (Exception $e)
{
}
}
}
?>
Dazu folgende Datei, wo das aufgerufen wird:
PHP:
<?php
require 'classes/class_userManagement.php';
$art=new userManagement($dbh);
if(isset($_POST['send']))
{
$art->add(array('uname'=>$_POST['uname'],
'pw'=>$_POST['pw'],
'email'=>$_POST['email'],
'plz'=>$_POST['plz'],
'ort'=>$_POST['ort'],
'strasse'=>$_POST['strasse'],
'hnr'=>$_POST['hnr'],
'geb_tag'=>$_POST['geb_tag'],
'geb_mon'=>$_POST['geb_mon'],
'geb_jahr'=>$_POST['geb_jahr']
));
}
?>
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\battle_final\classes\class_userManagement.php on line 49
Könnt ihr mir sagen, wo mein Fehler liegt?
Zuletzt bearbeitet von einem Moderator: