gpt4 book ai didi

php - MYSQL 数据库返回错误计数

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

即使数据库表中没有给定的电子邮件地址,这段代码每次都会返回 1。正如您所说,我将 die($count) 放在 bind_result 之后。每次都返回 1。您是否注意到我的代码有任何错误?

    $stmt = $db->prepare("SELECT COUNT(id) FROM `users` WHERE `email`=? LIMIT 1") or die($db->error);
$stmt->bind_param("s", $email) or die ($stmt->error);
$stmt->execute() or die ($stmt->error);
$count=$stmt->bind_result($count) or die ($stmt->error);
die($count);
$stmt->close();
return ($count > 0 ? true : false);

最佳答案

您没有调用 $stmt->fetch() 将查询结果放入绑定(bind)变量 $count。

$count 的值因此设置为 $stmt->bind_result() 的返回值,它始终为真 (1) 或假 (0)。

请参阅 http://php.net/manual/en/mysqli-stmt.bind-result.php 中的示例,您使用 bind_result() 来告诉语句将结果存储在哪些 PHP 变量中,但是您必须将查询结果作为对 fetch() 的单独调用来获取。


回复:这些函数都没有返回你计数的结果。

函数在成功时返回 TRUE,在失败时返回 FALSE。它们不返回查询结果。这就是绑定(bind)变量的原因,因此提取可以将结果作为副作用存储在该变量中——而不是作为返回值。您不应分配 $count=*anything*

您的代码应如下所示:

$stmt = $db->prepare("SELECT COUNT(id) FROM `users` WHERE `email`=? LIMIT 1") 
or die($db->error);
$stmt->bind_param("s", $email)
or die ($stmt->error);
$stmt->execute()
or die ($stmt->error);
$stmt->bind_result($count) // do not use return value
or die ($stmt->error);
$stmt->fetch() // do not use return value
or die ($stmt->error);
print ($count);
$stmt->close()
or die ($stmt->error);
return ($count > 0 ? true : false);

关于php - MYSQL 数据库返回错误计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088736/

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