php PDO 脚本拒绝给出有用的错误
php PDO script refusing to give useful errors
我有一个用于运行数据库查询的脚本,但是当尝试运行这个脚本时我得到错误致命错误:调用成员函数fetch()在第 209 - 209 行的 /var/www/Quack/doSetup.php 中的非对象是 while 循环。我 99% 确定这对应于我的数据库中缺少一列,但是我无法确定它不喜欢哪一列。我希望这个 try catch 系统可以告诉我,但事实并非如此。有什么办法我也可以得到这个给我更多关于它找不到的信息吗?
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();}
您收到的错误是抱怨 $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 吗?
您必须将错误模式设置为抛出异常才能获取它们,否则只会设置内部错误代码:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
我有一个用于运行数据库查询的脚本,但是当尝试运行这个脚本时我得到错误致命错误:调用成员函数fetch()在第 209 - 209 行的 /var/www/Quack/doSetup.php 中的非对象是 while 循环。我 99% 确定这对应于我的数据库中缺少一列,但是我无法确定它不喜欢哪一列。我希望这个 try catch 系统可以告诉我,但事实并非如此。有什么办法我也可以得到这个给我更多关于它找不到的信息吗?
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();}
您收到的错误是抱怨 $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 吗?
您必须将错误模式设置为抛出异常才能获取它们,否则只会设置内部错误代码:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);