php PDO脚本拒绝提供有用的错误

时间:2015-04-09 10:55:07

标签: php mysql pdo

我有一个脚本,用于运行数据库查询,但是当尝试运行此脚本时,我收到错误致命错误:在/ var / www中的非对象上调用成员函数fetch()第209 - 209行上的/Quack/doSetup.php是while循环。我99%肯定这对应于我的数据库中有一个缺少的列,但是我无法确定它不喜欢哪一个。我希望这个尝试捕获系统可能告诉我,它没有。有什么方法可以让我得到更多关于它找不到的信息吗?

try{
    $query = $db->query("SELECT articles . title FROM articles");
    $query = $db->query("SELECT title FROM articles");
    $SQLGetLogs = $conn -> query("SELECT `payments`.* , `plans`.`name` AS `planname`, `users`.`username` FROM `payments` LEFT JOIN `plans` ON `payments`.`plan` = `plans`.`ID` LEFT JOIN `users` ON `payments`.`user` = `users`.`ID` ORDER BY `ID` DESC");

    while($getInfo = $SQLGetLogs -> fetch(PDO::FETCH_ASSOC)){
        echo 'true';
    }
}
catch(PDOException $e){echo 'My test failed: ' . $e->getMessage();}

2 个答案:

答案 0 :(得分:1)

您必须设置错误模式以抛出异常才能获取它们,否则只设置内部错误代码:

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

答案 1 :(得分:0)

您收到的错误是抱怨$ SQLGetLogs不是有效对象,这意味着无论您将其设置为什么都会返回无效结果。

的SQL语句
 $SQLGetLogs = $conn -> query("SELECT `payments`.* , `plans`.`name` AS `planname`, `users`.`username` FROM `payments` LEFT JOIN `plans` ON `payments`.`plan` = `plans`.`ID` LEFT JOIN `users` ON `payments`.`user` = `users`.`ID` ORDER BY `ID` DESC");

可能是失败或者没有产生你想要的输出。您应该在数据库中手动运行查询并检查您获得的输出。

这里的$ conn应该是$ db吗?