Например, ник пользователя в таблице mysql хранится как поле типа varchar. Длина varchar, насколько я помню, 255 байт.
Следует ли мне проверять, что длина ника не более 255 символов (положим что размер каждого символа 1 байт) и выводить пользователю сообщение, что "длина ника не более 255 символов"?
Или не обращать на длину внимание и сохранять поле в базу данных, а при ошибке (кстати, mysql выдаст ошибку, если в поле попробовать записать больше данных, чем можно?) выводить пользователю сообщение, что "не удалось выполнить ваш запрос"?
Если мне следует проверять, то нужно ли это делать вообще для каждого текстового поля? Например, размер поля типа bigtext?
Конечно надо делать для пользователя , если будет "Не удалось выполнить ваш запрос" он подумает что сайт нерабочий , а если " разрешена длина ника не более 255 символов" то для него будет это намного понятней!
> кстати, mysql выдаст ошибку, если в поле попробовать записать больше данных, чем можно?
Нет, mysql не выдаст ошибку (UPD от JhaoDa: если выключен строгий режим (STRICT_TRANS_TABLES)). Он просто обрежет строку до нужной длины, в вашем случае до 255 символов.
Так что ответ - да, проверку на длину строки нужно делать, иначе просто при превышении 255 символов вы потеряете данные.
JhaoDa: а иначе он выдаст ошибку, да?
А вы не знаете какой-нибудь удобный пакет для такой валидации? Что-то вроде такого:
'field' => 'required|type_varchar'
Хотелось бы, чтобы такое правило было не захардкодено для конкретной базы данных, а было чуть умнее. Когда используется mysql, брался размер поля varchar в mysql, когда - postgres, размер поля varchar в postgres (предположим, что он не 255 байт).
Также хотелось бы, чтобы учитывался размер utf-8 символов.