Php 将表单值与数据库中的所有值匹配

Php 将表单值与数据库中的所有值匹配,php,Php,所以我的研究让我遇到了这个小问题。(我进入php已经整整一个月了,如果我不太清楚,我很抱歉) 我有一个由用户名和密码组成的小表单 <form method="post" action="proc.php"> <table> <tr> <td>Username:</td> <td><input type="text" name="user

所以我的研究让我遇到了这个小问题。(我进入php已经整整一个月了,如果我不太清楚,我很抱歉)

我有一个由用户名和密码组成的小表单

    <form method="post" action="proc.php">
      <table>
        <tr>
            <td>Username:</td>
            <td><input type="text" name="user" id="user"></td>
        </tr>
        <tr>
            <td>password:</td>
            <td><input type="text" name="password" id="password"></td>
        </tr>
            <tr>
            <td></td>
            <td><input type="submit" value="submit"></td>

        </tr>

</table>
</form>
为了测试我的while循环…(因为我是新lol),当我这样做时:

$nums = array(1,2,3,4,5);

for($i=0; $i<6; $i++){
    if($nums[0] < 6 ) echo $i . '<br/>';
}
你知道为什么它没有检查所有的价值观吗?我肯定我错过了什么,哈哈

任何提示、建议等,我都将不胜感激。 谢谢你


somdow.

您应该限制结果,而不是返回所有帐户

$dbq = "SELECT * FROM accounts WHERE username = '$name';";
然后查看返回的结果是否为空,如果不是,则根据查询返回的密码检查密码

编辑:
嘿,我不会因为你不应该做OP可能不知道他能做的事情而被击败,因为我比他更清楚。。。。因此,如果要将输入的文本放入查询中,那么还应该检查SQL注入。(希望通过添加更多内容和复制以前的答案,我可能会获得更多的投票。)

而不是返回所有帐户,您应该限制结果

$dbq = "SELECT * FROM accounts WHERE username = '$name';";
然后查看返回的结果是否为空,如果不是,则根据查询返回的密码检查密码

编辑: 嘿,我不会因为你不应该做OP可能不知道他能做的事情而被击败,因为我比他更清楚。。。。因此,如果要将输入的文本放入查询中,那么还应该检查SQL注入。(希望通过添加更多内容和复制以前的答案,我可能会获得更多的投票。)

您不需要(也不应该)从数据库表中获取所有数据,并迭代所有结果以进行此类检查。为什么?

  • 这既慢又耗资源
  • 不太安全
  • 数据库引擎更好地搜索数据库中的内容(它们是为完成此类任务而设计的)
  • 在大型数据库中,您可能会为PHP脚本执行填充所有允许的内存(这将返回错误)
尝试使用更具体的SQL,并使用数据库引擎功能,这样做对您自己有利:

$query = "SELECT user_id FROM accounts WHERE username = :username";
您不需要(也不应该)从数据库表中获取所有数据并迭代所有结果来进行此类检查。为什么?

  • 这既慢又耗资源
  • 不太安全
  • 数据库引擎更好地搜索数据库中的内容(它们是为完成此类任务而设计的)
  • 在大型数据库中,您可能会为PHP脚本执行填充所有允许的内存(这将返回错误)
尝试使用更具体的SQL,并使用数据库引擎功能,这样做对您自己有利:

$query = "SELECT user_id FROM accounts WHERE username = :username";

客户端筛选。。。啊。。。您应该仔细阅读SQL查询中的子句。除非我遗漏了什么,否则简单的
WHERE username='$username'
不适合您吗?客户端筛选。。。啊。。。您应该仔细阅读SQL查询中的子句。除非我遗漏了什么,否则简单的
WHERE username='$username'
不适合您吗?