Reputation: 51
public function votesThisMonth()
{
$this->query = $this->pdo->prepare
("
SELECT
COUNT(*) AS num_votes
FROM
votes
WHERE
YEAR(year) = YEAR(CURRENT_DATE)
AND MONTH(month) = MONTH(CURRENT_DATE)
");
$result = $this->query->execute();
return $result['num_votes'];
}
I want to return ALL rows that are on year 2013 and month 5. But it returns '1' while I have 10+ rows with the same data?
What did I do wrong?
These are the rows that are located in my database:
id ip year month
1 127.0.0.1 2013 5
2 127.0.0.1 2013 5
3 127.0.0.1 2013 5
4 127.0.0.1 2013 5
5 127.0.0.1 2013 5
6 127.0.0.1 2013 5
7 127.0.0.1 2013 5
8 127.0.0.1 2013 5
9 127.0.0.1 2013 5
10 127.0.0.1 2013 5
11 127.0.0.1 2013 5
12 127.0.0.1 2013 5
13 127.0.0.1 2013 5
14 127.0.0.1 2013 5
15 127.0.0.1 2013 5
EDITED MY METHOD PLEASE LOOK:
public function votesThisMonth()
{
$this->query = $this->pdo->prepare
("
SELECT
*
FROM
votes
WHERE
YEAR(year) = YEAR(CURRENT_DATE)
AND MONTH(month) = MONTH(CURRENT_DATE)
");
$this->query->execute();
return $this->query->rowCount();
}
This returns '0', why?
Upvotes: 2
Views: 166
Reputation: 24645
The query should be
SELECT * FROM votes
WHERE `year` = YEAR(CURRENT_DATE)
AND `month` = MONTH(CURRENT_DATE)
Upvotes: 2
Reputation: 32912
year
and month
are keywords, regardless the case, so wrap them in backticks
public function votesThisMonth()
{
$this->query = $this->pdo->prepare
("
SELECT
COUNT(*) AS num_votes
FROM
votes
WHERE
`year` = YEAR(CURRENT_DATE)
AND `month` = MONTH(CURRENT_DATE)
");
$result = $this->query->execute();
return $result['num_votes'];
}
Upvotes: 1
Reputation: 564
You should do it as following
public function votesThisMonth()
{
$this->query = $this->pdo->prepare
("
SELECT
COUNT(*) AS num_votes
FROM
votes
WHERE
YEAR(year) = YEAR(CURRENT_DATE)
AND MONTH(month) = MONTH(CURRENT_DATE)
");
$this->query->execute();
$result = $this->query->fetch(PDO::FETCH_ASSOC);
return $result['num_votes'];
}
Upvotes: 0