Как подсчитать все вхождения строк результатов запроса

Я не уверен, делаю ли я это неправильно или нет, включая то, что я должен быть, но я использую rowCount() чтобы попытаться подсчитать все строки в моей базе данных для результатов запроса, например так: $count_total_friend = $friend_stmt->rowCount();, Результаты показывают 6, когда должно быть только 2. Кажется, что он считает все строки в моей базе данных, а не мои запрошенные результаты.

Что я делаю неправильно?

введите описание изображения здесь

    $friend_status = 2;
    $friend_sql = "
        SELECT *
        FROM friends
        WHERE friend_one or friend_two = ?
        AND status = ?
    ";
    $friend_stmt = $con->prepare($friend_sql);
    $friend_stmt->execute(array($user_id, $friend_status));
    $friend_total_rows = $friend_stmt->fetchAll(PDO::FETCH_ASSOC);
    $count_total_friend = $friend_stmt->rowCount();
    foreach ($friend_total_rows as $friend_total_row) {
        //$select_friend_1  = $friend_total_row['friend_one'];
        //$select_friend_2  = $friend_total_row['friend_two'];
        //$friend_status        = $friend_total_row['status'];
        //$friend_status_date = $friend_total_row['date'];
    }

1 ответ

Решение

Возникла проблема с вашим запросом

    SELECT *
    FROM friends
    WHERE friend_one or friend_two = ?
    AND status = ?

Это должно быть что-то вроде

    SELECT *
    FROM friends
    WHERE (friend_one = ? or friend_two = ?)
    AND status = ?

Конечно, вам нужно будет связать правильные параметры

Другие вопросы по тегам