【问题标题】:Mysqli - Equal and Different ExpressionMysqli - 相等和不同的表达式
【发布时间】:2016-07-26 10:58:34
【问题描述】:

我的查询有一些问题,总是返回 false,但如果不存在,它应该返回 true。 问题是由于表达式不存在,所以它返回 false。

function isRegistered($mysqli, $username, $sitename, $status){
    if($stmt = $mysqli->prepare("SELECT COUNT(*) FROM table1 WHERE username= ? AND sitename = ? AND status != ?")){
        $stmt->bind_param("sss", $username, $sitename, $status);
        $stmt->execute();
        $stmt->store_result();
        if($stmt->num_rows == 0){
            return true;
        }else{
            return false;
        }
    }
}

我正在寻找函数是真还是假。如果为假,则抛出错误,如果为真,则进行下一步。问题是总是假的(即使那不是真的)。​​

基本上用户只能在特定区域注册一次。所以第一次应该允许,第二次不允许。有人可以检查我的查询出了什么问题吗?

【问题讨论】:

标签: php mysql mysqli


【解决方案1】:

聚合查询的行数始终为 1。如果没有任何内容与 WHERE 子句匹配,则将返回一行,其值为“1”。

您可以通过将SELECT COUNT(*) 更改为非聚合值来解决此问题,例如SELECT 1SELECT username。或者,您可以从查询中读取 COUNT(*) 的值并使用它。

我会让你选择如何继续。

【讨论】:

  • 谢谢。我不知道聚合查询总是 1。我选择了一些元素,然后对它们进行计数 :) 它有效。我会接受答案,因为网站让我:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多