2016-11-28 11 views
0

私はこれを間違っているかどうか、私はすべきではないかどうかはわかりませんが、rowCount()を使用して、このように:$count_total_friend = $friend_stmt->rowCount();。結果は、2になるはずのときに6が表示されます。照会された結果ではなく、データベースのすべての行を数えているようです。クエリの結果のすべての行の出現をカウントする方法

私は間違っていますか?

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 or friend_two = 24 AND status = 2'となります。 – Paul

+0

右括弧を忘れました。私の更新を参照してください – Max

+0

ちょうどそれをキャッチしました。助けてくれてありがとう!\ – Paul

関連する問題