php 检查数据库中的行是否存在总是返回 true

标签 php mysql

我想根据“id”和“devicetoken”两列检查数据库表中是否存在条目。

作为这个函数的结果,我总是得到 true,但是在数据库中,没有这样的条目。这怎么可能?

$selectSQL = "SELECT id from devices where devicetoken = ? and id = ?";
echo "token:".$utoken."\n";
echo "id:".$uid."\n";
$resultId = -33;
if ($stmt->prepare($selectSQL)) {
    $stmt->bind_param('ii', $utoken, $uid);
    $stmt->execute();
    $stmt->bind_result($resultId);
    $stmt->fetch();
    $stmt->close();
    echo $resultId;
    if ($resultId == $uid) {
        echo "AA";
        return true;
    } else {
        echo "BB";
        return false;
    }
}

当我使用此参数运行页面时:

token:asdf

id:2

我得到打印的输出 2AA,因为 $resultId == $uid。但这怎么可能呢? select 语句清楚地过滤了两个 where 条件,并且没有诸如 token = asdf 和 id = 2 这样的条目。 id = 2 的真实条目具有标记值 = 'b'。

这是我的表格的截图:

mysql table

如果我在 Mysql Workbench 上运行代码

SELECT id from devices where devicetoken = 'b2' and id = 2

我没有得到任何错误和 0 个结果,这是正确的。但是从 PHP 页面得到错误的结果。这怎么可能?

最佳答案

看到 OP 想要一个答案:

正如我在评论中所述, token 是一个字符串,您正在为绑定(bind)中的“整数”传递 i

对于字符串应该是“s”。

bind_param('si'

关于php 检查数据库中的行是否存在总是返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41122971/

相关文章:

php - 将带有特殊字符的文件上传到 wampserver 上的 mediawiki

java - 内部异常: com. mysql.jdbc.exceptions.MySQLSyntaxErrorException: 'name'中的未知列 'field list'

php - 使用列总和创建图像

javascript - 如何将数据映射到 map (Google map )上的邮政编码?

php - 当前年份的最后 2 个数字

php - 当 MySQL 中出现重复条目​​时重定向到自定义错误页面

php - 使用 fetch_assoc 通过 PHP 遍历 MYSQL 结果

php - 如何正确地将表单数据传递到CodeIgniter中的数据库函数

php - 跟踪用户事件以建立个人用户资料和建议

php - 我无法连接到数据库