PDOStatement::execute()
возвращает либо TRUE
, либо FALSE
(см. здесь ), поэтому $res
устанавливается в логическое значение, а затем вы пытаетесь вызвать метод для него. Попробуйте вместо этого:
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$sql = "SELECT COUNT(*) FROM users WHERE repo=? AND list=? AND email=?";
$q=$dbh->prepare($sql);
if (($res = $q->execute(array($repo, $list, $email))) === FALSE) {
echo 'Query failed!';
exit;
}
$v = $q->fetchColumn();