2016-04-24 11 views
1

ich eine Funktion haben, die ungefähr so ​​aussieht, deren Zweck es ist, zu überprüfen, ob ein Benutzer bereits in der Datenbank per E-Mail vorhanden ist:mysqli_num_rows auf vorbereitete Anweisung gibt 0

function b_check_if_email_exists(mysqli $db_object, $email) 
{ 
    $statement = $db_object->prepare("SELECT * FROM users WHERE email = ?"); 
    $statement->bind_param("s", $email); 
    $statement->execute(); 
    return ($statement->num_rows > 0); 
} 

jedoch die Funktion immer wieder false durch zu $statement->num_rows immer 0. Eingabe der Abfrage SELECT * FROM users WHERE email = "[email protected]" in MySQL Workbench funktioniert einwandfrei. Jede Hilfe würde sehr geschätzt werden.

+0

den Wert von $ E-Mail –

+0

Der Wert von $ E-Mail prüfen, wie soll ("[email protected]"). – tobycode

+2

Warum gibt es 'mysqli' in' mysqli $ db_object'? –

Antwort

1

versuchen mit:

function b_check_if_email_exists(mysqli $db_object, $email) 
{ 
    $statement = $db_object->prepare("SELECT * FROM users WHERE email = ?"); 
    $statement->bind_param("s", $email); 
    $statement->execute(); 
    $statement->store_result(); 
    return ($statement->num_rows > 0); 
} 
+0

Das hat funktioniert, danke! Ich werde diese Antwort so schnell wie möglich annehmen. – tobycode

+3

Mit 13.8K rep geben Sie immer noch einen * Versuch mit * als Beschreibung, ohne zu erklären, warum das Hinzufügen von '-> store_result()' das Problem des OP lösen sollte? – Sean

+0

Mit 13.8 k rep, sah ich unzählige Gründe für Dinge nicht zu arbeiten, daher die * versuchen mit * Formulierung. Ich denke wirklich, dass das OP schlau genug ist, nach dem zu suchen, was diese einzelne Codezeile macht, wenn er mehr herausfinden will. Alles in allem denke ich, deine Zeit wäre viel besser damit verbracht, echte Antworten zu geben, anstatt zu versuchen, andere Leute zu verprügeln. Auf diese Weise werden nicht nur alle gewinnen, sondern eines Tages sogar das mit 13.8k rep –

Verwandte Themen