2016-04-22 9 views
0

Ich habe ein Problem mit meiner vorbereiteten Aussage, ich habe Stack für die Antwort durchsucht und versuchte viele von ihnen sie vergebens, ich habe die Insert-Anweisung überprüfen, die korrekt ist, habe ich auch versucht, mit der Aussage als reguläre Aussage, die, der Fehler, den ich als Mysqli Bind_Param Fehler

Fatal error:call to function bind_param()on a non object in ** on line 23 

Wenn ich eine normale Abfrage auf der ersten Abfrage verwenden, die zweite zeigt nicht den Fehler

der Code ist

unten

zu arbeiten scheint
public function reg_user($name,$username,$password,$email){ 
     $password = password_hash($password); 
     $stmt = $this->db->prepare("SELECT uid FROM users WHERE uname= ? OR uemail = ?"); 
     $stmt->bind_param("ss", $username,$email); 
     $stmt->execute(); 
     $count_row = $stmt->num_rows; 
     if($count_row == 0){ 
      $stmt = $this->db->prepare("INSERT INTO users (uname,upass,fullname,uemail) VALUES(?,?,?,?)"); 
      $stmt->bind_param("ssss", $username,$password,$name,$email); //line 23 
      $return = $stmt->execute(); 
      return $return; 
     } else{ 
      return false; 
     } 
    } 
+0

Sie zu bekommen versuchen, kann nicht mehrere Parameter gleichzeitig binden. Sie sollten sie als ein Array in 'execute()' übergeben oder jedes Mal einen Parameter binden. Ersteres ist modularer und weniger redundant – Terry

+0

Der Fehler kann nicht in Zeile 23 sein - der Code hat nur 15 Zeilen! –

+0

Ja, aber es ist Teil einer Klasse, die mehr Zeilen hat, es ist sinnlos, die volle Klasse zu veröffentlichen, wenn dies die Funktion ist, die den Fehler hat –

Antwort

0

Fügen Sie diese beiden Zeilen Code nach dem ersten $stmt->execute

$result = $stmt->get_result(); 
$count_row = $result->num_rows; 

Der Grund, warum Ihr Code fehlschlägt, weil Sie die Anzahl der Zeilen aus einem vorbereiteten Statement-Objekt anstelle eines Ergebnisses

+0

Vergessen, das zu ändern, um nach dem Versuch eine Standardabfrage vorzubereiten, aktualisiert die Frage, um wieder in Vorbereitung hinzuzufügen, das gibt mir auch immer noch das gleiche Problem –

+0

Also wird der Fehler durch den zweiten Aufruf von bind_param verursacht? – dimlucas

+0

Zeile 23 ist die zweite Bindung, die den Fehler gibt, aber funktioniert mit einer Standardabfrage eine der ersten Bindung, die ist, was mich verwirrt –