php mysql where语句,如果第二个条件为false,则返回true

时间:2018-02-18 13:04:37

标签: php mysql

我正在运行一个mysql语句,尽管值不正确,但实际上它的结果为true。贝娄是功能

<?php
public function login_user($username, $password){

      if(!empty($username) && !empty($password)){
        $sql = "SELECT * FROM `users` WHERE `user_name`='$username' AND `user_password`='$password'";
        $query = $this->link->query($sql);

        if($this->link->error){
            //return false;
            $this->log_db_error($this->link->error, $sql);
            return false;
        }
        else{

            return true;
        }
    }
    else{
      return false;
    }
  }
?>

使用params调用此函数并传递正确的用户名和错误的密码实际上返回true,我在哪里弄乱?任何帮助

1 个答案:

答案 0 :(得分:0)

因为即使数据库中不存在用户名和密码的组合,sql查询也完全有效。

您可以通过以下方式实现目标: 检查查询是否返回空数据集。

一些提示: 1.您的查询很容易sql注入。最好使用prepare然后绑定所有输入参数。 2.在数据库中保持密码(如md5或BCrypt)是很好的。