gpt4 book ai didi

php - 使用 prepare 语句选择查询返回 0 行

转载 作者:行者123 更新时间:2023-11-29 05:12:24 25 4
gpt4 key购买 nike

我的 sql prepare 语句有问题。我尝试做选择查询来检查数据库中是否存在电子邮件,之后我检查语句是否返回任何行,如果它返回意味着电子邮件已经存在并且我返回“找到电子邮件”,如果不是应该返回“找不到电子邮件”。

现在的问题是我尝试检查的电子邮件是否存在于数据库中,但我仍然收到“找不到电子邮件”。

这是我的 PHP 代码:

try{
$servername = "localhost";
$dbusername = "xxx";
$dbpassword = "xxx";
$dbname = "xxx";

// Create connection
$conn = new mysqli($servername, $dbusername, $dbpassword, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}


$stmt = $conn->prepare(" SELECT `Email` FROM `Accounts` WHERE `Email`='?' ");
// set parameters and execute
$emaila = "test001@gmail.com";
$stmt->bind_param('s', $emaila);
$stmt->execute();
// if the email is not found
if(mysqli_stmt_num_rows($stmt) == 0){
$stmt->close();
$conn->close();
$data['success'] = false;
$data['message'] = 'Email not found';
echo json_encode($data);
}
else{
$stmt->close();
$conn->close();
$data['success'] = false;
$data['message'] = 'Email found';
echo json_encode($data);
}

}
catch(Exception $e){
$data['success'] = false;
$data['message'] = 'Error found';
echo json_encode($data);
}

我尝试使用这些引号,但它就是行不通,我花了 3 个小时在上面。请帮忙。

最佳答案

准备好的语句不需要单引号。所以:

SELECT `Email` FROM `Accounts` WHERE `Email` = ?;

为什么不呢? SQL 解释器在输入时知道参数的类型。因此,单引号是多余的(在这种情况下实际上是有害的)。您可以将字符串(或日期)参数视为与一对单引号一起进入查询字符串以将其标识为字符串。

关于php - 使用 prepare 语句选择查询返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37631692/

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