这个查询为什么会产生一个布尔值而不是数字?

问题描述:

我试图打印出这个查询的总行,我不明白为什么这个查询结果在一个布尔,而不是与整个行的整数。这个查询为什么会产生一个布尔值而不是数字?

$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得到一个错误,所以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(); 

如果PDO::query失败,则返回布尔值false。根据你的情况,这似乎是失败的,因为你需要用引号(')资格的字符串文字:

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