В моем HTML-коде есть выбор с параметрами и кнопка, которая открывает диалоговое окно, позволяющее пользователю добавлять в список параметров [через DB / PHP / jQuery].
В случае, когда они вводят опцию, которая уже существует в БД, я хочу поймать MySQL Duplicate Key
ошибка и использовать его для запуска кода, который находит параметр, соответствующий введенному пользователем, и выбирает его для них.
mysqli::$errno returns 1062
и мой код прекрасно работает, когда я использую необработанное число.
Но что, если это число изменится в будущем обновлении? Я бы предпочел использовать определение, предоставляемое установкой PHP.
PHP Мануэль намекает на такое определение:
Номера сообщений об ошибках клиента перечислены в заголовке MySQL errmsg.h
файл, номера сообщений об ошибках сервера перечислены в mysqld_error.h. В
Исходный дистрибутив MySQL вы можете найти полный список ошибок
сообщения и номера ошибок в файле Docs / mysqld_error.txt.
Я нашел документ «mysqld_error.txt», который имеет следующее определение:
#define ER_DUP_ENTRY 1062
Существует также следующий документ: http://dev.mysql.com/doc/refman/5.6/en/error-messages-server.html который имеет то же самое определение.
Но когда я пытаюсь использовать это в своем коде PHP, я получаю «Использование неопределенной константы ER_DUP_ENTRY — предполагается, что ‘ER_DUP_ENTRY’заметьте. Я даже пытался MySQLi :: ER_DUP_ENTRY.
Кто-нибудь знает способ сделать это без использования числового значения?
Все, что мне нужно было сделать, это заключить имя константы в кавычки. В моем случае это работает отлично.
if ('ER_DUP_ENTRY') {
#logic here;
}
Других решений пока нет …