2014-11-08 116 views
1

我試圖打印出這個查詢的總行,我不明白爲什麼這個查詢結果在一個布爾,而不是與整個行的整數。這個查詢爲什麼會產生一個布爾值而不是數字?

$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,我得到的結果爲數字。

回答

1

你從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(); 
2

如果PDO::query失敗,則返回布爾值false。根據你的情況,這似乎是失敗的,因爲你需要用引號(')資格的字符串文字:

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