简体   繁体   中英

Count rows in while loop

I am trying to while loop information into a SELECT statement, then COUNT the results. I have tried at least 10 different "solutions" and none works. I only get 0, 1, or nothing. Here's my most recent attempt:

$query35 = "SELECT * FROM movies WHERE userID = $memberID";
$result35 = $db->query($query35);

while ($row35 = $result35->fetchAll(PDO::FETCH_ASSOC)) {

    $movie = $row35['movie'];

    $query36 = "SELECT COUNT(*) AS similar FROM movies WHERE userID = '$profileID' && movie = '$movie'";
    $result36 = $db->query($query36);
    $row36->fetchObject;

    $similar = $row36['similar'];

    echo $similar;

}

If all you are looking to do is count the number of times your loop is run per script execution, then it is fairly simple to do. See below:

$count = 0;

while($row35 = $result35->fetch(PDO::FETCH_ASSOC)){
    //Do all your loop stuff.
    $count++;
}

var_dump($count);

Important to note that your $count variable needs to be declared outside of your loop.

Also you either need to use fetchAll with a foreach loop, or use fetch with a while loop, but don't mix them.

Also a tip on good practice. Try to avoid as much as possible executing any kind of database querying with a loop, you can run into serious performance issues down the line as your loops get bigger.

$row36->fetchObject;

似乎是空对象,我认为应该是

$row36 = $result36->fetchObject();

Not sure what are you doing. But at least try:

$query35 = "SELECT * FROM movies WHERE userID = $memberID";
$result35 = $db->query($query35);
if ($row35 = $result35->fetchAll(PDO::FETCH_ASSOC)) 
foreach ($row35 as $row) {

    print_r($row);

}

or maybe

$query35 = "SELECT * FROM movies WHERE userID = $memberID";
$result35 = $db->query($query35);
while ($row = $result35->fetch(PDO::FETCH_ASSOC)) {

    print_r($row);

    $movie = $row['movie'];

    $query36 = "SELECT COUNT(*) AS similar FROM movies WHERE userID = '$profileID' && movie = '$movie'";
    $result36 = $db->query($query36);
    $obj  = $result36->fetchObject();

    $similar = $obj->similar;

    echo $similar;

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM