【发布时间】:2015-07-01 13:31:57
【问题描述】:
我目前通过 Laravel 设置了一个表单,其中 text 表单输入设置为最大长度为 30:
{{ Form::text('employer' , Input::old('employer'), array('class'=>'form-control', 'maxlength'=>'30')) }}
我还在 MySQL 中设置了长度为 30 的列。
我最近收到一个错误,即提交的该字段的输入长度为 31 个字符,我不确定这会如何发生。
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'employer' at row 1 (SQL:update...)
我假设数组编号中的某些东西正在计数,0 是第 1 个,29 是第 30 个,但我在几个不同的浏览器中检查过,最大长度为 30 的结果总是为 30。
maxlength 标签在浏览器之间的查看方式是否可能不同?
我想我可以将输入中的 maxlength 设置为比 MySQL 中的长度低 1,但是通过应用程序具有不同的值似乎有点混乱。
【问题讨论】:
-
有没有可能是用户只是去掉了客户端的maxlength属性,然后提交了自己选择的字符串?
-
也许他们绕过了@MartinBean 提到的属性,在前端验证旁边,您可以在控制器中添加验证(或在您处理此的任何地方)。在 laravel 网站上查找 Validation (因为你没有提到版本我不会随便链接),它会添加一个额外的服务器端层,它也可以返回错误/反馈。
-
文本输入似乎没有什么异常:
Georgia Piedmont Technical Coll所以它已经被截断了,只是一个额外的字符过长...