2015-03-31 4 views
2

У меня есть небольшой скрипт, который берет имя пользователя и пароль от моего клиента, и если их учетные данные верны, они попадают в их каталог сайта на моем сервере разработки.Вход PHP в if/else условие условное не выполняется else

Состояние if прекрасно работает и отвечает на правильные учетные данные, соответствующие их счетным частям в моей базе данных MySQL.

Однако условие else не будет выполняться вообще (т. Е. Оно не будет направлять пользователя на страницу с ошибкой, если их учетные данные являются неработающими). Я думаю, что цикл while может отключать логику, но мне нужна переменная $row, чтобы получить поле каталога из БД.

Любые идеи?

$username = stripslashes($_POST['username']); 
$password = stripslashes($_POST['password']); 

$pass = md5($password); 

$conn = mysqli_connect("localhost", "root", "", "digital_server"); 
$sql = "SELECT * FROM projects WHERE username = '$username' AND password = '$pass'"; 

$query = mysqli_query($conn, $sql); 

while($row = mysqli_fetch_assoc($query)) { 

    if($query) { 
     header("Location: " . $row['directory'] . "/"); 
    } 

    else { 
     header("Location: http://dev.myserver.com/error.php"); 
    } 
} 

ПОСТАНОВИЛИ Совершенные спасибо всем, кто помог.

Измененного код блок Убраны время и создал $row переменных, чтобы получить нужные данные для if логики

$row = mysqli_fetch_assoc($query); 

    if(mysqli_num_rows($query) > 0) { 
     header("Location: " . $row['directory'] . "/"); 
    } 

    else { 
     header("Location: http://dev.myserver.com/error.php"); 
    } 

ответ

1
// No need of while here 
//while() {  
    if(mysqli_num_rows($query) > 0) { 
    $row = mysqli_fetch_assoc($query); 
     header("Location: " . $row['directory'] . "/"); 
    } else { 
     header("Location: http://dev.myserver.com/error.php"); 
    } 

Вариант 2

$sql = "SELECT * FROM projects WHERE username = '$username' AND password = '$pass'"; 
$query = mysqli_query($conn, $sql); 
$row = mysqli_fetch_array($query); 

    if(count($row) > 0) { 
      header("Location: " . $row['directory'] . "/"); 
     } else { 
      header("Location: http://dev.myserver.com/error.php"); 
     } 
+0

Как я могу использовать 'переменную $ row', если я не создаю его в' while' цикле? – WebDevDanno

+0

Я просто понял, что тоже. Удалил 'while' и только что создал переменную' $ row'. Благодарю. – WebDevDanno

+0

Im рад помочь вам :) –

0

Вы, вероятно, ищете mysqli_num_rows($result);

$query = mysqli_query($conn, $sql); 
if(mysqli_num_rows($query) > 0) { 
    $row = mysqli_fetch_assoc($query); 
    header("Location: " . $row['directory'] . "/"); 
}else{ 
    header("Location: http://dev.myserver.com/error.php"); 
} 

Вы можете всегда улавливайте ошибку в запросе, используя mysqli_error

0
 $username = stripslashes($_POST['username']); 
     $password = stripslashes($_POST['password']); 

     $pass = md5($password); 

     $conn = mysqli_connect("localhost", "root", "", "digital_server"); 
     $sql = "SELECT * FROM `projects` WHERE `username` = '$username' AND `password` = '$pass'"; 

     $query = mysqli_query($conn, $sql); 

     if(mysqli_num_rows($query) > 0) { 
    $row = mysqli_fetch_assoc($query); 
     header("Location: " . $row['directory'] . "/"); 
    } 
else 
{ 
     header("Location: http://dev.myserver.com/error.php"); 
    } 
Смежные вопросы