2016-08-05 6 views
0

Wenn ich diesen Code ausführen, ich die folgende Fehlermeldung erhalten:Fatal error Anruf auf eine Elementfunktion bind_param() auf einem Nicht-Objekt

Fatal error call to a member function bind_param() on a non-object. 

Hier ist der Code für die Funktion:

public function storeUser($name, $email, $password, $phone, $address1, $address2) { 
    $uuid = uniqid('', true); 
    $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 

    $stmt = $this->conn->prepare("INSERT INTO `users`(`id`, `unique_id`, `name`, `email`, `phone`, `address1`, `address2`, `encrypted_password`, `salt`, `created_at`) VALUES (?,?,?,?,?,?,?,?,NOW())"); 
    $stmt->bind_param("ssssssss", $uuid, $name, $email, $phone, $address1, $address2, $encrypted_password, $salt); 
    $result = $stmt->execute(); 
    $stmt->close(); 

    // check for successful store 
    if ($result) { 
     $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?"); 
     $stmt->bind_param("s", $email); 
     $stmt->execute(); 
     $user = $stmt->get_result()->fetch_assoc(); 
     $stmt->close(); 

     return $user; 
    } else { 
     return false; 
    } 
} 
+0

im Grunde Ihre Abfrage fehlgeschlagen angegeben wurde. –

+0

haben Sie als Android ohne Code codiert, um die Frage zu unterstützen. –

+0

das riecht wie variabler Bereich. Erzähl uns; Mit welcher MySQL API verbinden Sie sich? Du warst still ... also frage den Typen, der dir eine Antwort gegeben hat. Aber ich habe mein Geld entweder für Verbindung und/oder für variablen Umfang. –

Antwort

0

Hier ist ein gu Beispiel, da die Verbindungsmethode nicht

public function connection ($username, $password, $servername, $databasename) 
{ 
    $this->conn = new PDO("mysql:host=$servername;dbname=$databasename", $username, $password); 
    return true; 
} 
public function storeUser($name, $email, $password, $phone, $address1, $address2) 
{ 
    $uuid = uniqid('', true); $hash = $this->hashSSHA($password); 
    $encrypted_password = $hash["encrypted"]; // encrypted password 
    $salt = $hash["salt"]; // salt 
    $stmt = $this->conn->prepare("INSERT INTO `users`(`id`, `unique_id`, `name`, `email`, `phone`, `address1`, `address2`, `encrypted_password`, `salt`, `created_at`) VALUES (?,?,?,?,?,?,?,?,NOW())"); 
    $stmt->bindValue(1, $uuid, PDO::PARAM_STR); 
    $stmt->bindValue (2, $name, PDO::PARAM_STR); 
    $stmt->bindValue (3, $email, PDO::PARAM_STR); 
    $stmt->bindValue (4, $phone, PDO::PARAM_STR); 
    $stmt->bindValue (5, $address1, PDO::PARAM_STR); 
    $stmt->bindValue (6, $address2, PDO::PARAM_STR); 
    $stmt->bindValue (7, $encrypted_password, PDO::PARAM_STR); 
    $stmt->bindValue (8, $salt, PDO::PARAM_STR); 
    $result = $stmt->execute(); 
    if ($result) 
    { 
     $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?"); 
     $stmt->bind_param(1, $email PDO::PARAM_STR); 
     $stmt->execute(); 
     $user = $stmt->fetch(PDO::FETCH_ASSOC); 
     return $user; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

bist du dir absolut sicher? Sehen Sie sich den Rest ihres Codes/Funktionen an. Es ist mysqli_ nicht PDO. –

+0

Nein, bin ich nicht. Ich bin mir ziemlich sicher, dass es am Ende eine Fahne braucht. – McStuffins

+0

Wie nennt man das 'fetch_assoc()', PDO auch? Wir haben keine Ahnung, mit welcher MySQL API sie sich verbinden. Wenn Sie nicht zu 100% sicher sind, dass sie PDO verwenden, müssen Sie die Frage komplett neu schreiben. –

Verwandte Themen