繁体   English   中英

计算while循环中的行

[英]Count rows in while loop

我想while环路信息到SELECT语句,则COUNT的结果。 我尝试了至少10种不同的“解决方案”,但均无效果。 我只会得到0、1或什么都没有。 这是我最近的尝试:

$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;

}

如果您要做的只是计算每次脚本执行循环运行的次数,那么这样做就很简单。 见下文:

$count = 0;

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

var_dump($count);

重要的是要注意,您需要在循环外声明$ count变量。

另外,您要么需要将fetchAll与foreach循环一起使用,要么将fetch与while循环一起使用,但不要将它们混合使用。

也是良好实践的秘诀。 尝试尽可能避免使用循环执行任何类型的数据库查询,随着循环变大,您可能会遇到严重的性能问题。

$row36->fetchObject;

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

$row36 = $result36->fetchObject();

不知道你在做什么。 但至少尝试:

$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);

}

或者可能

$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;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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