gpt4 book ai didi

php - PHP/MySQLi 查询的 Ajax 调用返回错误结果

转载 作者:行者123 更新时间:2023-11-29 06:27:56 25 4
gpt4 key购买 nike

我正在尝试检查我的数据库中是否已存在输入值。

到目前为止,我得到了以下内容,但这总是返回“无效”(即使我输入匹配的值),所以我的猜测是我的 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";
}

最佳答案

没有理由使用num_rows,它不仅令人困惑、容易误用,而且如果误用还可能导致性能问题。

只需获取 COUNT(1),然后从 SQL 结果的第一行中获取单个列。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($host, $username, $password, $database);
$conn->set_charset('utf8mb4');

$stmt = $conn->prepare("SELECT COUNT(1) FROM users WHERE username = ?");
$stmt->bind_param("s", $_POST['username']);
$stmt->execute();
$exists = $stmt->get_result()->fetch_row()[0];

if($exists) {
echo "valid";
} else {
echo "invalid";
}

如果您出于某种奇怪的原因想要坚持使用num_rows,您要么必须在语句上调用store_result(),然后获取num_rows code> 从语句或调用 get_result() 并读取返回结果集上的 num_rows 值。

关于php - PHP/MySQLi 查询的 Ajax 调用返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com