PHP:if条件然后重定向1其他重定向2

PHP:if条件然后重定向1其他重定向2,php,mysql,if-statement,Php,Mysql,If Statement,我想做一个非常简单的检查。我想从数据库中选择一条代表用户名和密码的记录。现在的问题是if从哪里开始。无论我是否将数据库中存在的表单凭据放入表单,我仍然不会被重定向。除了使用mysqli\u num\u字段($result),我还尝试使用mysqli\u num\u行($result),但仍然不起作用。这开始让我发疯了 我还尝试了$result的var_转储,得到了以下结果: object(mysqli_result)#2 (5) { ["current_field"]=> int(0) [

我想做一个非常简单的检查。我想从数据库中选择一条代表用户名和密码的记录。现在的问题是
if
从哪里开始。无论我是否将数据库中存在的表单凭据放入表单,我仍然不会被重定向。除了使用
mysqli\u num\u字段($result)
,我还尝试使用
mysqli\u num\u行($result)
,但仍然不起作用。这开始让我发疯了

我还尝试了$result的var_转储,得到了以下结果:

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }
我不知道该怎么解释

<?php
$con=mysqli_connect("localhost","root","XXXXX","test");
$pass = $_POST['pass'];
$uid = $_POST['uid'];
$result = mysqli_query($con, "SELECT uid FROM test.login WHERE uid = '$uid' AND pass = '$pass'");
if(mysqli_num_fields($result) == 0) { header('Location: index.html')} else { header('form.html')}


mysqli_close($con);
?>


提前谢谢。这可能是一个相当愚蠢的问题,对此我深表歉意,但我知道我在所有LAMP方面都是新手。

您应该发送正确的标题。一点格式说明if分支和else分支之间的区别:

if(mysqli_num_fields($result) == 0) { 
    header('Location: index.html')
} else { 
    header('form.html')
}
你应该使用

if(mysqli_num_fields($result) == 0) { 
    header('Location: index.html');
} else { 
    header('Location: form.html');
}
相反

正如@u_mulder所说,PHPDocu没有提到像mysqli_num_fields()这样的函数/方法。 您的代码很容易被SQL注入,您应该使用正确的方法转义用户输入。更好的方法是:使用事先准备好的语句。 成功登录应该只依赖于结果中的一个匹配行


旁注:存储明文密码是一个非常糟糕的主意。

mysqli\u查询
mysql\u num\u字段
?你不是在这里捣乱吗?哦,是的,对不起,我实际上也尝试过mysqli_num_字段,我得到了相同的结果。PHP手册说没有
mysqli_num_字段
函数。你确定“$\u POST”包含你期望的内容吗?如果是这样,您是否验证了您的SQL语句是否正确?我还使用了mysqli_num_rows和同样的东西。但是,对我来说,bluefish(代码编辑器,也许不是最好的)是自动完成的,所以基本上它告诉我有这样一种方法。我的意思是,它总是把我带到
index.html
mysqli_num_字段($result)0
就好像有条件尝试这个答案,除非使用适当的函数检查
$result
mysqli_num_行
。更改为…\u行,但我总是被重定向到index.html。代码现在看起来像这样: