【发布时间】:2020-02-13 03:36:00
【问题描述】:
我正在尝试检查我的数据库中是否已存在输入值。
到目前为止,我得到了以下信息,但这总是返回“无效”(即使我输入了匹配值),所以我的猜测是我的 SELECT 查询或 If Else 逻辑之后的部分有错误。
有人可以告诉我如何正确执行此操作吗?
我的 JS:
$('#btnCheck').click(function() {
var username = $('#username').val();
$.ajax({
url: 'userSubmit.php',
type: 'POST',
data: {username: username},
success: function(response){
if(response == 'valid') {
alert('Valid');
} else {
alert('Invalid');
}
}
});
});
我的 PHP:
$username = $_POST['username'];
$conn = new mysqli($host, $username, $password, $database);
if($conn->connect_error) {
die("Connection Error: " . $conn->connect_error);
}
$stmt = $conn->prepare("SELECT username FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
if($stmt->num_rows > 0) {
echo "valid";
} else {
echo "invalid";
}
【问题讨论】:
-
$stmt->num_rows的实际值是多少? -
您是否在浏览器的开发者工具中查看了请求/响应以查看实际返回的内容?
-
在代码中使用
die($conn->connect_error);是一个非常糟糕的主意,因为它可能会泄露敏感信息。更多解释见这篇文章:mysqli or die, does it have to die? -
关于您最近的问题的最后一点。你不要在数组上使用while。使用 fetch_all 你必须使用 foreach