在PHP中打印内容丰富、格式良好的mysql错误

在PHP中打印内容丰富、格式良好的mysql错误,php,mysql,debugging,pretty-print,Php,Mysql,Debugging,Pretty Print,Mysql错误是您在开发过程中看到的最常见的错误之一,我正在寻找一种愉快且信息丰富的方法来输出它们 phpMyAdmin显然有一个相当漂亮的打印机用于mySQL查询: 但是,它将错误打印为简单文本: 而在后一个示例中,之后的文本可以在查询中突出显示,以便在附近使用正确的语法。像这样: 即使是一个简短的查询,您也会立即看到文本前面有一个多余的逗号。在更大的查询中这样做可以极大地提高可读性,我很惊讶许多关于这个主题的搜索都没有结果 一句话中的问题:您是否使用或了解任何此类PHP类,这些PHP类

Mysql错误是您在开发过程中看到的最常见的错误之一,我正在寻找一种愉快且信息丰富的方法来输出它们

phpMyAdmin显然有一个相当漂亮的打印机用于mySQL查询:

但是,它将错误打印为简单文本:

而在后一个示例中,
之后的文本可以在查询中突出显示,以便在
附近使用正确的语法。像这样:

即使是一个简短的查询,您也会立即看到文本前面有一个多余的逗号。在更大的查询中这样做可以极大地提高可读性,我很惊讶许多关于这个主题的搜索都没有结果


一句话中的问题:您是否使用或了解任何此类PHP类,这些PHP类显示了用于调试的漂亮mysql错误?

对于您来说,使用自定义函数执行此操作非常简单:

function printPrettyError($sql, $error) {
    $display = preg_replace("~^(.*to use near ')(.*)(' at line [0-9]+)$~s", '$1<u>$2</u>$3', $error);
    $display .= "<br />$sql";
}
函数printPrettyError($sql,$error){
$display=preg_replace(“~^(.*)使用near”)(.*)(“[0-9]+)$~s”行的“$1$2$3”,$error);
$display.=“
$sql”; }

您必须对其进行定制,并决定是否要在$sql语句中添加更多格式项(即在FROM和ORDER BY等之前添加换行符),但这应该给您一个开始

可能有点离题,但我不认为开发过程中最常见的错误是SQL错误。在显示错误时,我通常安装了xDebug,它处理错误消息的“微调”。

我不确定这是否有效

mysql中的所有错误消息仅从该文件中呈现share/errmsg.txt

错误消息信息列在share/errmsg.txt文件中。%d和%s分别表示数字和字符串,在显示时将其替换为消息值

错误消息示例为,%s靠近第%d行的“%s”

因此,如果我们可以在errmsg.txt的所有错误消息中添加一些内容,那么我们可以在phpmysql\u error函数返回的字符串中检查匹配的字符串,然后将其设置为粗体或斜体

我认为以前没有写过具体的课程

您应该从头开始,将其放到自己的服务器上。

从网站上尝试:

简单地说,Krumo是print_r()和var_dump()的替代品。根据定义,Krumo是一个调试工具(最初用于PHP4/PHP5,现在仅用于PHP5),它显示关于任何PHP变量的结构化信息


我知道我自己能做到,但问题是是否已经有了一门(写得很好的)这门课。据我所知,我什么都没想到。但我相信你可以看看phpMyAdmin是如何做到的,并根据你的需要调整它,因为你似乎喜欢它是如何做到的。只需确保您的使用符合phpMyAdmin的许可协议。从精神上来说,答案是正确的,但在将SQL字符串反馈给浏览器之前,您确实应该对其进行HTMLSPECIALCHARS。你不想在这个问题上花费太多时间;毕竟,消除错误比让它们变得漂亮更重要。只让它们足够漂亮,以便您可以解释它们,找出错误并修复它们。Ian,这纯粹是为了调试目的,因此没有必要将输出htmlescape,因为它是您自己的数据。我将奖励这个答案,因为它无论如何都将过期,但我不会将它标记为已回答-它不是。您的问题是如何突出显示SQL代码,而不是如何显示它?有区别吗?重点是错误显示得尽可能清楚。这应该是对问题的评论,而不是回答。100%同意。SQL错误相对容易避免,任何生产应用程序都不应该有出错的可能性。。在数据库应用程序中进行查询开发(例如
phpMyAdmin
MySQL管理员
甚至是
MySQL
命令行应用程序…@ravelen当时我没有足够的点来评论。我使用它并不断扩展它,它实际上非常缺乏信息,默认情况下会让人不舒服,几乎没有显示关于对象和资源的可用信息ce变量,仍然使用许多PHP4功能。当我完成更改后,如果许可证允许,我可能会共享代码。嘿,谢谢,伙计,这真的很方便,希望我能给你奖金,但为时已晚。我很高兴这个答案对你有帮助。。不在乎奖金。:)