2 votes

Comment retourner un résultat COUNT(*) à partir d'une requête PHP ?

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'];
}

Je veux retourner TOUTES les lignes qui sont sur l'année 2013 et le mois 5. Mais il renvoie '1' alors que j'ai plus de 10 lignes avec les mêmes données ?

Qu'est-ce que j'ai fait de mal ?

Ce sont les lignes qui se trouvent dans ma base de données :

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

J'AI MODIFIÉ MA MÉTHODE, REGARDEZ :

    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();
    }

Cela renvoie '0', pourquoi ?

2voto

Orangepill Points 17802

La requête doit être

SELECT * FROM votes
WHERE `year`  = YEAR(CURRENT_DATE)
  AND `month` = MONTH(CURRENT_DATE)

1voto

Jan Turoň Points 6598

year y month sont des mots-clés, quelle que soit la casse, alors mettez-les entre guillemets.

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'];
}

0voto

Hazem Mohamed Points 474

Vous devez procéder comme suit

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'];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X