2016-11-28 4 views
0

Ich bin mir nicht sicher, ob ich das falsch mache oder etwas nicht einschließe, aber ich benutze rowCount(), um alle Zeilen in meiner Datenbank nach den Abfrageergebnissen zu durchsuchen und zu zählen. so: $count_total_friend = $friend_stmt->rowCount();. Die Ergebnisse zeigen 6, wenn es nur 2 sein sollte. Es scheint, als würde es alle Zeilen in meiner Datenbank zählen, anstatt meine abgefragten Ergebnisse.Wie Sie alle Zeilenvorkommen von Abfrageergebnissen zählen

Was mache ich falsch?

enter image description here

Die

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

Antwort

1

Es gibt ein Problem mit Ihrer Anfrage

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

Es sollte Sie so etwas wie

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

Natürlich werden benötigt die richtigen params zu binden

+0

Es zeigt immer noch 4, wenn ich das tue. Die Parameter wären 'WHERE friend_one = 24 oder friend_two = 24 UND status = 2' – Paul

+0

Richtig, vergaß die Klammer. Bitte sehen Sie mein Update – Max

+0

Nur gefangen, dass. Danke für die Hilfe!\ – Paul

Verwandte Themen