Как использовать COUNT () с MYSQLi и подготовленными заявлениями? - PullRequest
0 голосов
/ 04 июля 2010

Мне нужно посчитать количество людей с таким же статусом из таблицы для конкретного пользователя. Я хочу использовать подготовленные заявления, поэтому я сделал что-то вроде этого (не работает):

$sql = 'SELECT status, COUNT(personID) FROM user_persons GROUP BY status WHERE userID = ?';

if ($stmt->prepare($sql)) {
    $stmt->bind_param('i', $userID);
    $stmt->bind_result($status, $count);
    $stmt->execute();
    while ($stmt->fetch()) {
        $data[$status] = $count;
    }
}

Я хочу получить такой массив:

$data[favorite] = 126
$data[otherstatus] = 345

Как это сделать?

Ответы [ 2 ]

2 голосов
/ 04 июля 2010

Я считаю, что GROUP BY должен быть после предложения WHERE.

$sql = 'SELECT status, COUNT(personID) FROM user_persons WHERE userID = ? GROUP BY status'

Вы получаете другие ошибки? Или просто не делал то, что хотел?

0 голосов
/ 01 февраля 2012

Добавьте к нему псевдоним, например:

$sql = 'SELECT status, COUNT(personID) AS count_p FROM user_persons WHERE userID = ? GROUP BY status';

... затем возьмите его, используя:

fetch_object:

$row->count_p

FETCH_ASSOC:

$row['count_p']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...