为什么php跳过if语句?

时间:2016-01-20 13:07:42

标签: php

我想要做的基础是检查用户值。

如果他们在那里返回true并返回页面,否则返回false并打印空值。

$query = sprintf("SELECT * from Users where username = ? and password = ?");
$params1 = array( $username, $password);
$stmt = sqlsrv_query($conn, $query, $params1);
if ($stmt === false) 
{
    die(print_r(sqlsrv_errors(), true));
}

$Users = array();

while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    $username1 = $row['username'];
    $password1= $row['password'];
}


$Users["username"] = $username1;
$Users["password"] = $password1;

//echo json_encode($Users);
echo "you are here";

if ($username1==null)
{
    return false;
    echo "null values";
}
else {
    return true;
    if (!empty($_SERVER['HTTP_REFERER']))
        header("Location: ".$_SERVER['HTTP_REFERER']);
    else
        echo "No referrer.";
}
echo "\n\nyou're at the end though";

sqlsrv_free_stmt($stmt);

sqlsrv_close( $conn );

}    
else {
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

正如您所看到的,我正在尝试调试程序并查看程序的进展情况。它达到了重点

//echo json_encode($Users);
echo "you are here";

之后似乎没有其他工作可做,我也不知道为什么。

2 个答案:

答案 0 :(得分:5)

在您工作echo后直接:

if ($username1==null)
{
    return false;
    ...
}
else
{
    return true;
    ...
}

...

因此,return语句会导致执行此操作。来自manual

  

如果在函数内调用,则立即返回语句   结束当前函数的执行,并将其参数作为   函数调用的值。 return也结束了执行   eval()语句或脚本文件。

     

如果从全局范围调用,则执行当前脚本   文件已结束。

另请注意,您应该检查查询返回的行数,现在如果没有找到行,您将收到undefined variable警告。

答案 1 :(得分:1)

在你输入thw之前你需要检查行计数if if statment如果它不是0则返回true否则返回false这样的东西

if(sqlsrv_num_rows($stmt)
{
// your code be here 
return true;
}else{
// your code be here 
return false;
}

http://php.net/manual/en/function.sqlsrv-num-rows.php