2015-07-20 216 views
0

我想打印一个查询的所有结果,但出于某种原因,我得到以下错误:致命错误:调用成员函数fetch()布尔在H:\ Some-Location \线X打印PDO查询结果

这是我的代码:

<?php 
    $query = "SELECT adID FROM given WHERE toUser = :userid"; 
    $query_params = array(':userid' => $_SESSION['user']['ID']); 
    try 
    { 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($query_params); 
    } 
    catch(PDOException $ex) 
    { 
     echo "Failed to run query: " . $ex->getMessage(); 
    } 

    while ($row = $result->fetch(PDO::FETCH_ASSOC)) 
    { 
     echo $row['adID']; 
    } 
?> 

有什么不对?

回答

0

PDOStatement上的​​方法不返回结果,它仅在查询成功或不成功时才发出信号(仅在不使用异常时才有用)。

PHP Documentation

public bool PDOStatement::execute ([ array $input_parameters ]) 

你想要做的是使用PDOStatement本身来获取数据:

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
{ 
    echo $row['adID']; 
} 

注:根据您当前的逻辑,循环甚至会执行当抛出异常时。尝试从catch块返回或将环路放在try块内。