首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用bind_param?

正确使用bind_param?
EN

Stack Overflow用户
提问于 2012-10-04 13:53:53
回答 1查看 571关注 0票数 0

我正在为一个应用程序(学校作业)做一个登录,我正在学习如何正确地使用mysqli类。下面是我的应用程序中的两个方法,用于检查用户输入的用户名和密码是否正确(即。是否存在于数据库中)。

我的问题是,这是否是使用bind_param的正确方式,还是为此目的使用它甚至可能是“过火”?可以/应该用另一种方式来做吗?

来自LoginModel.php

代码语言:javascript
复制
public function DoLogin($username, $password){

    $query = "SELECT * FROM Users WHERE username=? AND password=?"; 
    $stmt = $this->m_db->Prepare($query);

    $stmt->bind_param("ss", $username, $password);

    $ret = $this->m_db->CheckUser($stmt);

    return $ret;
}

来自Database.php

代码语言:javascript
复制
public function CheckUser($stmt) {

    if ($stmt->execute() == false) {
        throw new \Exception($this->mysqli->error);
    }
    $ret = 0;

    // $field1 = id, $field2 = username, $field3 = password
    if ($stmt->bind_result($field1, $field2, $field3) == FALSE) {
        throw new \Exception($this->mysqli->error);
    }

    if ($stmt->fetch()) {
        return true;        // Match exists in db           
    } else {
        return false;       // Match doesn't exist in db
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-04 13:57:40

不,这不是过火。bind_param的目的是允许MySQLi引擎准备针对不良影响的命令。最常见的情况是,它有助于防止SQL注入类型的攻击。你正在使用它,正如你应该使用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12728842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档