这个查询为什么会产生一个布尔值而不是数字?
问题描述:
我试图打印出这个查询的总行,我不明白为什么这个查询结果在一个布尔,而不是与整个行的整数。这个查询为什么会产生一个布尔值而不是数字?
$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'");