如果你不抓住它,就会有比你抓住更多的信息。只需尝试从您的代码中删除这些try..catch内容,您就会看到查询的前 15 个字符。但是如果你需要整个查询,有一种方法,虽然它不会马上给你,就像一个包含专门“最后执行的查询”的指定变量,但从技术上讲你可以有一种叫做stack trace 的东西,用于确切的目的。它可以向您显示代码中导致错误的所有调用,包括所有函数参数。将您的代码更改为此try{ $db->query($sql_q1); $db->query($sql_q2); $db->query($sql_q3);}catch (Exception $e) { var_dump($e->getTrace()); // or to get the full error info, just var_dump($e);}并且您将看到您的查询完全光荣,但如果这是您的目标,自动获取实际查询将是一件非常痛苦的事情。但是如果你只想记录/目视检查错误信息,它就可以了。显然你不应该在任何现实生活中的代码中将 var_dump() 放在 try_catch() 中。相反,必须将一些处理代码放入您的错误处理程序中。特别是如果您的目的是调试。因此,您的现实生活代码应该是这样的// somewhere in the bootstrapinclude 'error_handler.php';// anywhere in your code$db->query($sql_q1);$db->query($sql_q2);$db->query($sql_q3);在 error_handler.php 中,您可以添加代码来打印完整的堆栈跟踪。您可以在 Usman Munir 发布的文章中找到此类文件的示例(我顺便写了一个链接)。请注意,堆栈跟踪往往会变得非常大,并且会严重破坏您的日志。因此,请考虑将扩展输出设为可选。