2017-11-16 14 views
0

Ich möchte diese Anweisung den Benutzernamen des Benutzers anzeigen und ob sie ein Administrator sind oder nicht. Dies wird durch die Suche nach der E-Mail und dem Passwort im Formular bestimmt. Momentan wird nur "Sie sind kein Administrator" angezeigt, wenn Sie ausgeführt werden.PHP zeigt keine Ergebnisse

Ich denke, das ist, weil es nicht wirklich den Wert innerhalb der Datenbank und Standard macht die Admin-Variable in PHP 0, führt daher die else if-Anweisung.

PHP:

<?php 
//connection details 

$servername = "localhost"; 
$server_username = "root"; 
$server_password = ""; 
$dbname = "coursework"; 

$conn = mysqli_connect($servername, $server_username, $server_password, $dbname); 

$email=$_GET['email']; 
$password=$_GET['password']; 

//prepared statement 
$stmt = mysqli_prepare($conn, "SELECT username, admin FROM users WHERE email = ? AND password = ?"); 

//dealing with the parameters 
mysqli_stmt_bind_param($stmt, "ss", $email, $password); 

mysqli_stmt_execute($stmt); 

mysqli_stmt_bind_result($stmt, $result_username, $result_admin); 

while($row = mysqli_stmt_fetch($stmt)){ 

    if($row['admin'] == 1){ 
     echo "You are an admin " . $row['username']; 
    } 
    else if($row['admin'] == 0){ 
     echo "You are NOT an admin " . $row['username']; 
    } 
    else{ 
     echo "You are not registered"; 
    } 
} 

//close statement and connection 
mysqli_stmt_close($stmt); 
mysqli_close($conn); 


?> 
+0

Nun, Sie könnten sicher sein, gegen MySQL-Injektionen .. Sie sollten keine Klartext-Passwörter in Ihrer Anwendung lesen (http://php.net/manual/en/faq.passwords.php) –

+0

Was ist der Spaltentyp aus Administrator? –

+0

print '$ row ['admin']' und sehen, welche Daten dort – Bhargav

Antwort

0

Wenn mysqli_stmt_bind_result verwenden, dies die Ergebnisse Ihrer SQL in die Werte gebunden gesetzt werden, wenn Sie die mysqli_stmt_fetch ausführen.

Also den Test ändern ...

$res = mysqli_stmt_fetch($stmt) 
if($res === true){ 
    if($result_admin == 1){ 
     echo "You are an admin " . $result_username; 
    } 
    else{ 
     echo "You are NOT an admin " . $result_username; 
    } 
} 
else if ($res == null) { 
     echo "You are not registered"; 
} 

Die Rückkehr von mysqli_stmt_fetch wahr ist, wenn Daten abgerufen werden, falsch für einen Fehler und null, wenn keine Daten zurückgegeben werden (das heißt nicht registriert).

+0

Gibt immer noch einen weißen Bildschirm –

+0

Ich habe den Code geändert, um die Rückgabe von mysqli_stmt_fetch mehr im Einklang mit der Dokumentation zu verarbeiten (http://php.net/manual/en/mysqli-stmt.fetch.php) –

Verwandte Themen