2016-11-28 8 views
0

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

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

enter image description here

$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 = ? 

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

+0

Он все еще показывает 4, если я это сделаю. Параметрами будут 'WHERE friend_one = 24 или friend_two = 24 AND status = 2' – Paul

+0

Правильно, забыли скобки. Пожалуйста, см. Мое обновление – Max

+0

Просто поймал это. Спасибо за помощь!\ – Paul