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

时间:2016-12-13 13:58:52

标签: php mysql

我想检查db-table中的条目是否存在基于两列' id'和' devicetoken'。

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

$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;
    }
}

当我用这个参数运行页面时:

  

令牌:ASDF

     

ID:2

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

这是我桌子的截图:

mysql table

如果我在Mysql Workbench上运行代码

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

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

1 个答案:

答案 0 :(得分:1)

看到OP希望找到答案:

正如我在评论中所说的那样,令牌是一个字符串,你传递的是i"整数"在绑定中。

它应该是" s"对于一个字符串。

bind_param('si'