num_rows在登录表单上返回0



我知道这已经进行了讨论,但是问题有些混乱。我正在使用MySqli准备的语句,但我也尝试了原始查询。num_rows总是0,我不知道为什么。因此,登录形式是故障。以下是PHP代码:

<?php
include("config.php");
session_start();
if(isset($_POST["userLogin"])){
$email = ($_POST["userEmail"]);
$password =($_POST["userPassword"]);
$stmt = $con->prepare("SELECT * FROM customers WHERE 
'customer_email'=? AND 'customer_password' =?");
$stmt->bind_param("ss", $email, $password);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($email, $password);
if($stmt->affected_rows == 1){
$stmt->fetch_assoc();
$_SESSION["user"] = $row["customer_id"];
$_SESSION["email"] = $row["customer_email"];
echo "logged in";
} else {
echo "Email / password combination incorrect";
}
}
?> 

这是下面的JavaScript代码。

$("#login").click(function(event){
event.preventDefault();
var email = $("#email").val();
var pass = $("#password").val();
$.ajax({
url :"login.php",
method: "POST",
data    :   {userLogin:1,userEmail:email,userPassword:pass},
success :function(data){
alert(data);
}
})
})

以下是html

<label for="email">E-mail Address</label>
<input type ="email" class ="form-control" id="email" required/>
<label for="email">Password</label>
<input type ="password" class ="form-control" id="password" required/>
<p><br/></p>
<a href="#" style="color:white; list-style:none;">Forgotten 
Password</a><input type="submit" class="btn btn-success" 
style="float:right;" id="login" value="Login">

相关数据库看起来像这样。

INSERT INTO `customers` (`customer_id`, `customer_name`, 
`customer_email`, `customer_pass`, `customer_country`, 
`customer_city`, `customer_address`, `customer_zipcode`)

注册效果很好,没有其他问题。我之前的mySQL num_rows返回0,并存储结果解决了问题。但是,这一次太复杂了。我一直在尝试调试几个小时,而不是一件事情。非常感谢帮助。

偶然发现了这个旧问题。看来您在字段/列名称周围使用引号('(。据我所知,文档同意,MySQL不支持这一点。如果以下内容,则必须使用一个:

  • 什么都没有,示例:从table1中选择field1
  • 示例:从table1中选择`field1`
  • 双引号,示例:从table1中选择" field1"

最后一个仅在启用ANSI_Quotes时适用。

现在,我还没有尝试过您的代码,但是引号的使用使您的查询比较两个字符串,而不是字符串的字段/列。您的查询

'customer_email'=?

文学意思是:将文本customer_email与绑定参数的值进行比较。除非表格中输入的用户名/电子邮件是Customer_email,否则它将永远不会匹配。密码相同。

相关内容

  • 没有找到相关文章

最新更新