Probleme mit der MySQLi Verbindung

Divo1984

Erfahrenes Mitglied
Hallöchen - ich habe folgende Klassen

PHP:
<?php
require_once 'class_Session.php';
class DB extends Session{
	protected $host;	
	protected $database;
	protected $user;
	protected $pw;
	
	protected $db;

	public function conn(){

		$this->host="localhost";
		$this->database="masked";
		$this->user="masked";
		$this->pw="masked";
		$db = new mysqli($this->host, $this->user, $this->pw, $this->database);	
		
		if ($db->connect_error){
			 	printf(
			    "Can't connect to MySQL Server. Errorcode: %s\n",
			    mysqli_connect_error());		
		        exit;
		}
		return $db; 
	 } 
}
?>


PHP:
<?php
require_once 'class/sub_classes/class_ReceiverManager.php';
require_once 'class/sub_classes/class_eMailManager.php';
class Register{
	public $regerror;
	public $vnameerror;
	public $nnameerror;
	public $emailerror;
	public $katerror;
	public $id;
	public function __construct($db){
		if(is_object($db))
			$this->db=$db;
		
		$this->receiver=new ReceiverManager($this->db);
		$this->email=new eMailManager($this->db);
		
		$this->regerror=TRUE;
		$this->vnameerror="";
		$this->nnameerror="";
		$this->katerror="";
		$this->id="";
	}
	
	public function CheckEntries($vname, $nname, $email, $kat1, $kat2, $kat3, $kat4){	
		if(($this->receiver->CheckName($vname))!==TRUE){
			$this->vnameerror="<tr><td style=\"text-align:left;\">Der Vorname ist zu kurz!</td></tr>";
		}if(($this->receiver->CheckName($nname))!==TRUE){
			$this->nnameerror="<tr><td style=\"text-align:left;\">Der Nachname ist zu kurz!</td></tr>";
		}if(($this->email->CheckeMail($email))!==TRUE){
			$this->emailerror="<tr><td style=\"text-align:left;\">Ihre eMail ist zu kurz!</td></tr>";
		}elseif(($this->EmailExist($email))!==FALSE){
			$this->emailerror="<tr><td style=\"text-align:left;\">Diese eMail ist bereits registriert!</td></tr>";
		}elseif(($this->email->ValidateeMail($email))!==TRUE){
			$this->emailerror="<tr><td style=\"text-align:left;\">Ihre eMail hat einen falschen Syntax!</td></tr>";
		}if(($this->receiver->CheckKats($kat1, $kat2, $kat3, $kat4))!==TRUE){
			$this->katerror="<tr><td style=\"text-align:left;\">Bitte wählen Sie min. 1 Kategorie!</td></tr>";
		}else{
			$this->regerror=FALSE;
		}
		
		return $this->regerror;
		return $this->vnameerror;
		return $this->nnameerror;
		return $this->emailerror;
		return $this->katerror;
	}
	
	public function EmailExist($email){
		var_dump($this->db);
		$a=$this->db->conn();
		$stmt=$a->prepare("SELECT u_id FROM b_receiver
				WHERE u_email=?");
		$stmt->bind_param("s", $email);
		$stmt->execute();
		$stmt->store_result();
		$anz=$stmt->num_rows;
		if($anz>0){
			return TRUE;
		}
		return FALSE;
	}
	
	public function RegUser($vname, $nname, $email, $code, $kat1, $kat2, $kat3, $kat4){
		
		$a=$this->db->conn();
		$stmt=$a->prepare("INSERT INTO b_receiver(u_vname, u_nname, u_email, u_code, kat1, kat2, kat3, kat4)
										   VALUES(?, ?, ?, ?, ?, ?, ?, ?)");
		$stmt->bind_param("ssssssss", $vname, $nname, $email, $code, $kat1, $kat2, $kat3, $kat4);
		$stmt->execute();
		$this->id=$stmt->insert_id;
		if($stmt->affected_rows>0){
			return TRUE;
			return $this->id;
		}
		return FALSE;
	}	
}
?>

diese werden aufgerufen mit

PHP:
<?php 
require_once 'class/sub_classes/class_DB.php';
require_once 'class/main_classes/class_Register.php';
require_once 'class/sub_classes/class_Mail.php';
$db=new DB();
$reg=new Register($db);
$mail=new Mail();

						<?php
						if(isset($_POST['back'])){
							include_once 'forms/navi/formular.php';
						}
						if(isset($_POST['register'])){
							//Registrierungsvorgang
							$reg->CheckEntries($_POST['vname'], $_POST['nname'], $_POST['email'], $_POST['kat1'], $_POST['kat2'], $_POST['kat3'], $_POST['kat4']);
							if(($reg->regerror)!==FALSE){
								echo "<form action=\"index.php\" method=\"POST\"><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
								echo $reg->vnameerror;
								echo $reg->nnameerror;
								echo $reg->emailerror;
								echo $reg->katerror;
								
								echo "</table>";
								
								echo"<input type=\"hidden\" name=\"vname\" value=\"".$_POST['vname']."\"><br>";
								echo"<input type=\"hidden\" name=\"nname\" value=\"".$_POST['nname']."\"><br>";
								echo"<input type=\"hidden\" name=\"email\" value=\"".$_POST['email']."\"><br>";
								
								echo"<input type=\"submit\" name=\"back\" value=\"Zurück\"></form>";
							}else{
								$code=md5($_POST['email'] . time());
								if(($reg->RegUser($_POST['vname'], $_POST['nname'], $_POST['email'], $code, $_POST['kat1'], $_POST['kat2'], $_POST['kat3'], $_POST['kat4']))===TRUE){
									$id=$reg->id;
									if(($mail->Registered($_POST['vname'], $_POST['nname'], $_POST['email'], $code, $id))!==FALSE){
										echo"Ihr Eintrag war erfolgreich!<br>";
									}else{
										echo"Mail konnte nicht gesendet werden!<br>";
									}
								}else{
									echo"Anmeldung hat nicht geklappt!<br>";
								}
							}
						}else{
							include_once 'forms/navi/formular.php';
						}

						?>

?>

Die Anmeldung klappt, aber die Funktiom EmailExist() haut nicht hin:(

WEnn ich dort die Datenbankverbindung per var_dump($this->db); prüfe kommt folgende Ausgabe:

object(DB)#1 (5) { ["host:protected"]=> NULL ["database:protected"]=> NULL ["user:protected"]=> NULL ["pw:protected"]=> NULL ["db:protected"]=> NULL }

Das komische daran ist, dass die darunterstehende Funktion RegUser() - aber klappt, hat jmd. eine Ahnung woran das liegt?
 
Zunächst:
PHP:
if($stmt->affected_rows>0){ 
  return TRUE; 
  return $this->id; 
}
Liefert dir immer TRUE zurück. $this->id wird niemals erreicht. Solltest du nochmal überarbeiten.

ch bin ehrlich gesagt gerade zu Faul die kompletten 1000 Zeilen durchzulesen.
Aber wenn du var_dump() vor dem connect() aufrufst, könnte das daran liegen dass überall NULL steht.
 
Zurück