Php '的目的是什么;限制为0,1';关于这个问题?

Php '的目的是什么;限制为0,1';关于这个问题?,php,mysql,Php,Mysql,我正在学习一个API教程(用户身份验证),但我对SQL还相当陌生,所以有些东西我不懂。 我一直在寻找答案,据我所知,LIMIT子句有一个偏移量(本例中为0)和一个计数(本例中为1)。 这是代码(在用户类中): 我的理解是,查询从一开始(第0行)就开始寻找类似的电子邮件,但我不明白为什么他们会将1绑定到电子邮件 这里有必要使用限制吗?为什么不能只使用WHERE email=:email子句(并将:email绑定到用户发送的电子邮件?查询检查电子邮件是否仅存在。如果同一封电子邮件中有更多记录,则执行

我正在学习一个API教程(用户身份验证),但我对SQL还相当陌生,所以有些东西我不懂。 我一直在寻找答案,据我所知,LIMIT子句有一个偏移量(本例中为0)和一个计数(本例中为1)。 这是代码(在用户类中):

我的理解是,查询从一开始(第0行)就开始寻找类似的电子邮件,但我不明白为什么他们会将1绑定到电子邮件


这里有必要使用限制吗?为什么不能只使用WHERE email=:email子句(并将:email绑定到用户发送的电子邮件?

查询检查电子邮件是否仅存在。如果同一封电子邮件中有更多记录,则执行该语句需要更多资源。如果至少有一条记录,则表示存在电子邮件。不需要再检查了


本例并没有清楚地显示它,但假设您有一个包含数百万条记录的表,并且您希望检查是否存在一个特定值,该值可以出现在多条记录中。若查询太复杂/有太多表是联合的等情况,您可以冻结数据库。您只需进行检查,所以将其限制为1。这对于这种类型的查询来说是一个很好的实践。

BTW这不会清理
htmlspecialchars(strip_标签($This->email))。它准备将字符串输出到HTML中,这在您拥有它的地方毫无意义。
function emailExists(){

    // query to check if email exists
    $query = "SELECT id, firstname, lastname, password
            FROM " . $this->table_name . "
            WHERE email = ?
            LIMIT 0,1";

    // prepare the query
    $stmt = $this->conn->prepare( $query );

    // sanitize
    $this->email=htmlspecialchars(strip_tags($this->email));

    // bind given email value
    $stmt->bindParam(1, $this->email);

    // execute the query
    $stmt->execute();

    // get number of rows
    $num = $stmt->rowCount();

    // if email exists, assign values to object properties for easy access and use for php sessions
    if($num>0){

        // get record details / values
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        // assign values to object properties
        $this->id = $row['id'];
        $this->firstname = $row['firstname'];
        $this->lastname = $row['lastname'];
        $this->password = $row['password'];

        // return true because email exists in the database
        return true;
    }

    // return false if email does not exist in the database
    return false;
}