我正在尝试打印查询的所有结果,但由于某种原因,我收到以下错误:致命错误:在第X行的H:\ Some-Location \中调用boolean上的成员函数fetch() / p>
这是我的代码:
Found one = "hello"
Found one = "good"
Found one = "bye"
Found one = "tomorrow"
Found one = "a quick fox"
Found one = "a slow bird"
Found one = "a smart dog"
Found one = "a wilf flowert"
出了什么问题?
答案 0 :(得分:2)
正如文档和错误所示,execute
返回一个布尔值:http://php.net/manual/en/pdostatement.execute.php
您需要在语句上调用fetch()
,而不是execute
的返回值。 :http://php.net/manual/en/pdostatement.fetch.php
所以用$result>fetch()
替换$stmt->fetch()
。
答案 1 :(得分:0)
execute()
上的PDOStatement
方法不返回结果,它仅表示查询是否成功(仅在不使用异常时有用)。
public bool PDOStatement::execute ([ array $input_parameters ] )
您要做的是使用PDOStatement
本身来获取数据:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo $row['adID'];
}
注意:根据您当前的逻辑,即使抛出异常,循环也会执行。尝试从catch
块返回或将循环放在try
块内。
答案 2 :(得分:0)
$ result只是一个保存execute语句成功/失败的布尔值。
你需要在$ stmt上运行fetch:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
echo $row['adID'];
}