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