Zum Inhalt springen

DillingerKnight

Mitglieder
  • Gesamte Inhalte

    2
  • Benutzer seit

  • Letzter Besuch

Beiträge von DillingerKnight

  1. vor 23 Minuten schrieb Whiz-zarD:

    Die Methode heißt bindParam() und nicht bind_param() und du musst jeden Parameter einzeln binden.

    https://www.php.net/manual/en/pdostatement.bindparam.php

    bind_param() stammt aus der mysqli Bibliothek und nicht aus PDO.

    https://www.php.net/manual/de/mysqli-stmt.bind-param.php

    Klasse ich danke dir. Der Fehler ist verschwunden aber jetzt stehe ich vor dem nächsten Fehler. Ist hier auch etwas falsch?:

    $result = $statement->execute(
    					array('nickname' => $nickname, 'eMail' => $eMail, 'password' => $pw_hash,  'name' => $name, 'age' => $age, 'sex' => $sex, ));
    				
    				if($result) {        
    					echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
    					$showFormular = false;
    				} else {
    					echo 'Beim Abspeichern ist leider ein Fehler aufgetreten';
    				}

    Denn jetzt sehe ich folgenden Fehler bezogen auf diese Zeilen:

    Zitat

    Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in D:\Software\XAMPP\htdocs\VierGewinnt\registry.php:84 Stack trace: #0 D:\Software\XAMPP\htdocs\VierGewinnt\registry.php(84): PDOStatement->execute(Array) #1 {main} thrown in D:\Software\XAMPP\htdocs\VierGewinnt\registry.php on line 84

     

  2. <?php
    	session_start();
    	//ini_set( 'default_charset', "" );
    	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    	error_reporting(E_ALL);
    		
    	$sqlhost = "localhost";
    	$sqluser = "root";
    	$sqlpass = "";
    	$dbname  = "user_data";
    	
    	try{
    		$pdo = new PDO('mysql:host=localhost; dbname=user_data', $sqluser, $sqlpass);
    		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		echo "Connected Successfully";
    	} catch(PDOException $e){
    		echo "Connection failed: " . $e->getMessage();
    	}
    	//$mDatabase = mysqli_connect($sqlhost, $sqluser, $sqlpass, $dbname) or die ("DB-system no available");
    ?>
    
    <!DOCTYPE html> 
    <html> 
    	<head>
    		<title>Registrierung</title>    
    	</head> 
    	
    	<body>
    	 
    		<?php
    		$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
    		 
    		if(isset($_GET['register'])) {
    			$error = false;
    			$eMail = $_POST['eMail'];
    			$password = $_POST['password'];
    			$password2 = $_POST['password2'];
    			$nickname = $_POST['nickname'];
    			$name = $_POST['name'];
    			$age = $_POST['age'];
    			$sex = $_POST['sex'];
    		  
    			if(!filter_var($eMail, FILTER_VALIDATE_EMAIL)) {
    				echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
    				$error = true;
    			}     
    			if(strlen($password) == 0) {
    				echo 'Bitte ein Passwort angeben<br>';
    				$error = true;
    			}
    			if($password != $password2) {
    				echo 'Die Passwörter müssen übereinstimmen<br>';
    				$error = true;
    			}
    			
    			//Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde
    			if(!$error) { 
    				$statement = $pdo->prepare("SELECT * FROM users WHERE eMail = :eMail");
    				$result = $statement->execute(array('eMail' => $eMail));
    				$user = $statement->fetch();
    				
    				if($user !== false) {
    					echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
    					$error = true;
    				}    
    			}
    			
    			//Keine Fehler, wir können den Nutzer registrieren
    			if(!$error) {    
    				$pw_hash = password_hash($password, PASSWORD_DEFAULT);
    				/*	$stmt = $pdo->prepare("INSERT INTO users (nickname, eMail, password, name, age, sex) VALUES (?, ?, ?, ?, ?, ?)");
    					$stmt->bind_param("ssssss", $nickname, $eMail, $pw_hash, $name, $age, $sex);
    					$stmt->execute();*/
    				
    				$statement = $pdo->prepare("INSERT INTO user_data.users('nickname', 'eMail', 'password', 'name', 'age', 'sex') VALUES (?, ?, ?, ?, ?, ?)");
    				$statement->bind_param("ssssis", $nickname, $eMail, $pw_hash, $name, $age, $sex); 
    				$result = $statement->execute(
    					array('nickname' => $nickname, 'eMail' => $eMail, 'password' => $passwort_hash,  'name' => $name, 'age' => $age, 'sex' => $sex, ));
    				
    				if($result) {        
    					echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
    					$showFormular = false;
    				} else {
    					echo 'Beim Abspeichern ist leider ein Fehler aufgetreten';
    				}
    			} 
    		}
    		 
    		if($showFormular) {
    		?>
    			<h1> Registrierung </h1>
    			
    			<form action="?register=1" method="post">
    			E-Mail:<br>
    			<input type="eMail" size="40" maxlength="250" name="eMail"><br><br>
    			
    			Dein Passwort:<br>
    			<input type="password" size="40"  maxlength="250" name="password"><br><br>
    			
    			Passwort wiederholen:<br>
    			<input type="password" size="40" maxlength="250" name="password2"><br><br>
    
    			Dein Nickname:<br>
    			<input type="nickname" size="40" maxlength="250" name="nickname"><br><br>
    
    			Dein Name:<br>
    			<input type="name" size="40" maxlength="250" name="name"><br><br>
    
    			Dein Alter:<br>
    			<input type="age" size="40" maxlength="120" name="age"><br><br>
    
    			Dein Geschlecht:<br>
    			<input type="sex" size="40" maxlength="250" name="sex"><br><br>
    			
    			<input type="submit" value="Abschicken">
    			</form>
    			
    		<?php
    			 } //Ende von if($showFormular)
    		?>
    		 
    	</body>
    </html>

    Hallo zusammen, 

    ich versuche hier eine Registrierung zu erstellen bekomme aber immer wieder folgenden Fehler: 

    Zitat

    Fatal error: Uncaught Error: Call to undefined method PDOStatement::bind_param() in D:\Software\XAMPP\htdocs\VierGewinnt\registry.php:76 Stack trace: #0 {main} thrown in D:\Software\XAMPP\htdocs\VierGewinnt\registry.php on line 76

    Und ich kann ihn einfach nicht lösen. Könnte mir hier jemand eventuell weiter helfen. Ich bin nicht besonders gut in PHP und verstehe auch das meiste kaum. Muss das aber fertig bekommen. Ich wäre euch echt dankbar. 

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...