2017-07-06 2 views
0

Ich habe einige Probleme mit meinem Code. Es scheint, als ob ich nicht in der Lage wäre, mehrere vorbereitete Aussagen zu haben, was mir etwas ungewöhnlich erscheint.Mehrere vorbereitete Anweisungen auf derselben Seite MYSQLI

Ich würde mich freuen, wenn Sie einen Fehler finden oder mir helfen, weil ich das Problem nicht herausfinden kann.

Mein Fehler:

Fatal error: Call to a member function bind_param() on boolean in /Applications/XAMPP/xamppfiles/htdocs/platform/creating_user.php on line 37

ich zu überprüfen, ich versuche, wenn der Benutzer E-Mails bereits in der Datenbank vorhanden ist und dann den Benutzer registrieren.

Der Code funktioniert gut, wenn ich den $ Check nicht ausführen.

$check->execute(); 

Ich möchte auch eine Antwort auf meinen Workflow (die Art, wie mein Code aufgebaut ist). Ist es okay?

Danke! Ich

<?php 


$db = new mysqli("localhost","root","","database"); 
session_start(); 


if (isset($_POST)){ 
    if(
     !empty($_POST["name"]) 
     & !empty($_POST["city"]) 
     & !empty($_POST["zip"]) 
     & !empty($_POST["email"]) 
     & !empty($_POST["tel"]) 
     & !empty($_POST["password"]) 
    ) { 

     $name  = encrypt($_POST["name"]); 
     $city  = encrypt($_POST["city"]); 
     $zip  = encrypt($_POST["zip"]); 
     $email  = encrypt($_POST["email"]); 
     $tel  = encrypt($_POST["tel"]); 
     $password = encrypt($_POST["password"]); 


     if(!empty($name) && !empty($city) && !empty($zip) && !empty($email) && !empty($tel) && !empty($password)) { 

      $check = $db->prepare("SELECT email FROM user WHERE email = ?"); 
      $check->bind_param('s', $email); 
      $check->execute(); 

      if ($check->num_rows == 1) { 
       header("Location: index.php"); 
       die(); 
      } else { 


      $insert = $db->prepare("INSERT INTO user (name, city, zip, email, tel, password, created) VALUES (?, ?, ?, ?, ?, ?, NOW())"); 
      $insert->bind_param("ssssss",$name, $city, $zip, $email, $tel, $password); 


      if ($insert->execute()){ 

       $db->close(); 
       $_SESSION["user"] = $email; 
       header("Location: created_user"); 
       die(); 

      } else { 
       header("Location: create-user"); 
       die(); 
      } 

     } 

     } else { 
      header("Location: create-user"); 
      die(); 
     } 


    } else { 
     header("Location: create-user"); 
     die(); 
    } 
} else { 
    header("Location: create-user"); 
    die(); 
} 


?> 
+1

'$ db-> prepare' a gibt' boolean' dies meistens bedeutet, dass es etwas falsch mit der DB Verbindung. – WasteD

+0

füge dies für die Diagnose hinzu if (! $ Check = $ db-> vorbereiten ("SELECT email FROM user WHERE email =?")) { echo $ db-> fehler; Ausgang (0); } – buildok

Antwort

0

auf php.net gefunden this

mysqli::prepare() returns a statement object or FALSE if an error occurred.

So bedeutet das etwas mit Ihrem $db Objekt falsch ist. Dies könnte:

  • Falsches Passwort
  • Falscher Benutzername
  • ...
Verwandte Themen