PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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 "<pre>";
var_dump($result, MysqLi_fetch_all($result));
echo "</pre>";

由于我希望查询返回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()来获得计数结果.这将产生正确的结果.如果您不确定如何使用这些功能,此手册将显示该示例.

> http://php.net/manual/en/mysqli-stmt.execute.php
> http://php.net/manual/en/mysqli-stmt.bind-result.php

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

大佬总结

以上是大佬教程为你收集整理的PHP-MySQL-选择计数返回true全部内容,希望文章能够帮你解决PHP-MySQL-选择计数返回true所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: