PHP if-else语句else给出空白屏幕
代码底部的if-else语句有问题 如果条件为真,它会正确地回显登录和用户名“super_user”,但如果条件为假,我会得到一个空白屏幕,它不会回显我的失败消息“nope” “超级用户”和“密码”从上一页的html输入表单中传递 我不确定我在这里犯了什么错误,我对PHP真的很陌生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=
<?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";