Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP if-else语句else给出空白屏幕_Php_If Statement - Fatal编程技术网

PHP if-else语句else给出空白屏幕

PHP if-else语句else给出空白屏幕,php,if-statement,Php,If Statement,代码底部的if-else语句有问题 如果条件为真,它会正确地回显登录和用户名“super_user”,但如果条件为假,我会得到一个空白屏幕,它不会回显我的失败消息“nope” “超级用户”和“密码”从上一页的html输入表单中传递 我不确定我在这里犯了什么错误,我对PHP真的很陌生 <?php session_start(); if ($_POST['Submit2']) { $super_user= $_POST['super_user']; $password=

代码底部的if-else语句有问题

如果条件为真,它会正确地回显登录和用户名“super_user”,但如果条件为假,我会得到一个空白屏幕,它不会回显我的失败消息“nope”

“超级用户”和“密码”从上一页的html输入表单中传递

我不确定我在这里犯了什么错误,我对PHP真的很陌生

<?php 
session_start(); 
if ($_POST['Submit2']) {  
    $super_user= $_POST['super_user'];
    $password= $_POST['password']; 

    $db = new mysqli('*******', '******', '*******', '******');

    if($db->connect_errno > 0){
        die('Unable to connect to database [' . $db->connect_error . ']');
    }

    $sql = <<<SQL
    SELECT *
    FROM `admin`
    WHERE password='$password' AND  super_user='$super_user'
    SQL;

    if(!$result = $db->query($sql)){
        die('There was an error running the query [' . $db->error . ']');
    }


    while($row = $result->fetch_assoc()){

        if  (($super_user == $row['super_user'] && $password == $row['password'] )){ 
            echo "logged in "; 
            echo "<br>"; 
            echo $row['super_user']; 
        }
        else
        {
            echo "nope"; 
        }
    }

}
?>

但在此之前,我只想回显用户名“super_user”,看看我的if-else语句是否有效。

问题是,如果运行错误的查询,您将永远不会进入while循环(因为它首先与用户/密码不匹配,因此sql查询不会返回任何结果/行)

因此,您的代码跳过while循环。。。。然后就结束了-因此是一个“白色”页面

只需在末尾添加一条消息:

if  ($result->rowCount > 0)
{
    while($row = $result->fetch_assoc()){

        if  (($super_user == $row['super_user'] && $password == $row['password'] )){ 
            echo "logged in "; 
            echo "<br>"; 
            echo $row['super_user']; 
        }
        else
        {
            echo "nope"; 
        }
    }
}
else
{
    echo 'no matching user found';
}
if($result->rowCount>0)
{
而($row=$result->fetch_assoc()){
如果($super_user==$row['super_user']&&&$password==$row['password']){
回显“登录”;
回声“
”; echo$row['super_user']; } 其他的 { 回应“不”; } } } 其他的 { 回显“未找到匹配的用户”; }
您的SQL查询检索具有给定用户名和密码的所有行。要么有(确切地说)一个,要么没有。因此,如果存在
if()
,则您的
if()将始终为真,如果没有,则永远不会执行,因为您的
while
将执行0次

相反,你可以使用

$found = 0;

while ($row = $result->fetch_assoc())
{
    $found = 1;
}

if ($found)
    echo "Logged in";
else
    echo "nope";
或更简单:

if ($result->fetch_assoc())
    echo "Logged in";
else
    echo "nope";

不管出现什么错误——您需要仔细阅读SQL注入——您都是新手,并且有一个空白页面。我想这是我对你说的:很好!我会这么做的。无论是否找到了匹配的用户(以及其他信息,如果找到的话)。如果我错了,请纠正我,如果是这样的话,我就要一杯双份浓缩咖啡。是的,我想我需要双份浓缩咖啡:)你太棒了!;)正如我所说,我对这一点还不熟悉,但这个例子确实有效。
if ($result->fetch_assoc())
    echo "Logged in";
else
    echo "nope";