mysql 返回true_PHP-MySQL-选择计数返回true

我正在尝试确定电子邮件在我的数据库中是否不完整.为此,我编写这段代码:

$query_checkmail = "SELECT COUNT(*) FROM user WHERE email = ?;";

if($stmt = mysqli_prepare($connection, $query_checkmail))

{

mysqli_stmt_bind_param($stmt, "s", $_POST["email"]);

$result = mysqli_stmt_execute($stmt);

mysqli_stmt_close($stmt);

}

echo "

";

var_dump($result, mysqli_fetch_all($result));

echo "

";

由于我希望查询返回0,因为电子邮件不应该在数据库中,所以输出是这样(来自var_dump):

bool(true)

NULL

我不明白为什么我没有得到值为0的mysqli结果对象,而是布尔值true,如果我想检查它,它总是在日志中触发PHP警告.

之前我有一个来自用户WHERE email =?;“;的普通SELECT ID,并且得到了相同的结果.我认为使用COUNT可以防止这种情况,但是我的尝试显然失败了.

我也找到了这个Stackoverflow Link,但是不幸的是,它并没有帮助我解决知道该值是否已经存在的问题.

非常感谢您的帮助.如果此信息不足,我将立即提供缺失的部分.

解决方法:

计数本身不会返回布尔值true或false,而是要检查从mysqli_stmt_execute()分配的变量,该变量返回布尔值.这与查询结果无关.如果您阅读有关此函数的文档,特别是mysqli_stmt_execute()的返回值,则会看到它们为true或false,因此毫不奇怪的是var_dump()返回布尔值.

如果需要实际计数,则必须使用mysqli_stmt_bind_result()和mysqli_stmt_fetch()来获得计数结果.这将产生正确的结果.如果您不确定如何使用这些功能,此手册将显示该示例.

至于NULL,这是因为要将布尔值传递给mysqli_fetch_all()函数,该函数期望mysqli_result,而由于上述原因而给它一个布尔值.

标签:return,return-value,select,mysql,php

来源: https://codeday.me/bug/20191026/1940427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值