【问题标题】:Why does this query result in a boolean instead of a number?为什么这个查询结果是布尔值而不是数字?
【发布时间】:2014-11-08 22:07:15
【问题描述】:

我正在尝试打印此查询的总行数,但我不明白为什么此查询的结果是布尔值而不是带有总行数的整数。

$butacas = $this->pdo->query('SELECT COUNT(*) FROM usuarios WHERE sala LIKE $nombreSala');

我尝试使用rowCount(),但收到此错误消息,告诉我 $butacas 不是对象。

所以,我问过 $butacas 是什么类型的元素,它是一个布尔值:

$x = gettype($butacas); //boolean

我已经尝试在 phpmyadmin 执行 SELECT COUNT(*) FROM usuarios WHERE sala LIKE theNameoftheSala 并得到一个数字的结果。

【问题讨论】:

    标签: mysql pdo count boolean


    【解决方案1】:

    如果PDO::query 失败,它会返回一个布尔值false。在您的情况下,它似乎失败了,因为您需要用引号 (') 限定字符串文字:

    $butacas = $this->pdo->query("SELECT COUNT(*) FROM usuarios WHERE sala LIKE '$nombreSala'");
    

    【讨论】:

      【解决方案2】:

      您收到来自 MySQL 的错误,因此 query() 返回 false。您需要在LIKE 之后引用字符串。此外,您需要在 PHP 字符串周围使用双引号,因为变量不会在单引号内展开。

      $butacas = $this->pdo->query("SELECT COUNT(*) FROM usuarios WHERE sala LIKE '$nombreSala'");
      

      但最好使用bindParam

      $stmt = $this->pdo->prepare('SELECT COUNT(*) FROM usuarios WHERE sala LIKE :nombreSala');
      $stmt->bindParam(':nombreSala', $nombreSala);
      $stmt->execute();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-10
        • 1970-01-01
        • 2015-02-19
        • 2019-07-23
        • 2022-11-08
        • 2021-11-22
        • 2010-10-10
        • 1970-01-01
        相关资源
        最近更新 更多