Печать информативных, хорошо отформатированных ошибок mysql в PHP


Ошибки Mysql являются одними из наиболее распространенных, которые вы видите во время разработки, и я ищу приятный и информативный способ их вывода.

У phpMyAdmin, по-видимому, есть приличный симпатичный принтер для запросов MySQL:

Проанализированный запрос http://img706.imageshack.us/img706/2873/clipboard02a.png

Однако он выводит ошибки в виде простого текста:

Вывод ошибок http://img683.imageshack.us/img683/1577/clipboard03g.png

В то время как в в последнем примере текст после for the right syntax to use near мог быть выделен в запросе. Вот так:

Альтернативный текст http://img710.imageshack.us/img710/2839/clipboard03z.png

Несмотря на то, что это короткий запрос, вы сразу видите, что прямо перед текстом есть лишняя запятая. Выполнение этого в гораздо больших запросах может значительно повысить читабельность, я удивлен, что многочисленные поиски по этому вопросу ничего не дали.

Вопрос в одном предложении: Используете ли вы или знаете любого такого класса PHP, который отображает довольно много ошибок mysql для целей отладки?

Author: raveren, 2010-08-10

4 answers

Я не уверен, сработает ли это..

Все сообщения об ошибках из mysql выводятся только из этого файла share/errmsg.txt

Информация о сообщении об ошибке указана в share/errmsg.txt файл. %d и %s представляют числа и строки соответственно, которые подставляются в значения сообщений при их отображении.

Пример сообщения об ошибке будет выглядеть следующим образом: %s рядом с "%s" в строке %d

Так что, если мы сможем что-то добавить во все ошибки сообщения на errmsg.txt , затем мы можем проверить соответствие строки в строке, возвращаемой функцией php mysql_error, затем выделите их жирным шрифтом или курсивом..

Я думаю, что раньше не было написано определенного класса..

Вы должны начать с нуля и перейти на свой собственный сервер.

 2
Author: Vijay, 2010-08-19 07:32:34

Это действительно довольно тривиально для вас, чтобы сделать это с помощью пользовательской функции:

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

Вам нужно будет настроить его и решить, хотите ли вы добавить больше элементов форматирования в инструкцию $sql (т.Е. Добавить разрывы строк до и УПОРЯДОЧИТЬ ПО и т.д.) Но это должно дать вам начало.

 6
Author: Brad F Jacobs, 2010-08-09 20:44:11

Возможно, не по теме, но я не думаю, что наиболее распространенными ошибками во время разработки являются ошибки SQL. В качестве отображения ошибок в целом у меня установлен xDebug, и он обрабатывает "точную" настройку сообщений об ошибках.

 1
Author: mhitza, 2010-08-15 23:18:06

Попробуйте http://krumo.sourceforge.net / с веб-сайта:

Проще говоря, Krumo является заменой print_r() и var_dump(). По определению Krumo - это инструмент отладки (первоначально для PHP4/PHP5, теперь только для PHP5), который отображает структурированную информацию о любой переменной PHP.

 0
Author: Eduardo Romero, 2010-08-19 09:05:37