在while循环

时间:2015-04-22 18:35:55

标签: php mysql count

我正在尝试将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;

}

3 个答案:

答案 0 :(得分:0)

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

$count = 0;

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

var_dump($count);

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

此外,您需要将fetchAll与foreach循环一起使用,或者使用带有while循环的fetch,但不要混用它们。

也是良好做法的提示。尽量避免使用循环执行任何类型的数据库查询,随着循环变大,可能会遇到严重的性能问题。

答案 1 :(得分:0)

$row36->fetchObject;

似乎是null对象,我认为它应该是

$row36 = $result36->fetchObject();

答案 2 :(得分:0)

不确定你在做什么。但至少尝试:

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

}