html的表单length长度是以字符个数计算的,不管是汉字还是字母,但是数据库又是按字节计算的,汉字占2个字母占1个,这样容易造成写入的时候长度超出的问题。

两个问题:

1.有没有好的方法,能够在前端或者php或者mysql之间使用统一的方法计算长度?

2.还是只能把数据库长度设的足够大,让表单永远不会超出?

.

回复内容:

html的表单length长度是以字符个数计算的,不管是汉字还是字母,但是数据库又是按字节计算的,汉字占2个字母占1个,这样容易造成写入的时候长度超出的问题。

两个问题:

1.有没有好的方法,能够在前端或者php或者mysql之间使用统一的方法计算长度?

2.还是只能把数据库长度设的足够大,让表单永远不会超出?

.

mysql在4.1之后,char和varchar定义的就是字符长度了。

具体可以去看下文档The CHAR and VARCHAR Types。

而4.1的文档中有直接提到。

The CHAR and VARCHAR types are declared with a length that indicates the maximum number of characters you want to store. For example, CHAR(30) can hold up to 30 characters. (Before MySQL 4.1, the length is interpreted as number of bytes.)

统一计算长度,是基于“长度”这个概念是一样的标准的,首先你要规定你的“长度”指的是什么。

如果“长度”指的字节长度,那么可以这样(假设页面编码是utf8):

// javascript

function lengthInUtf8Bytes(str) {

// Matches only the 10.. bytes that are non-initial characters in a multi-byte sequence.

var m = encodeURIComponent(str).match(/%[89ABab]/g);

return str.length + (m ? m.length : 0);

}

len = lengthInUtf8Bytes(str);

//php

$len = strlen($str);

//mysql

CREATE DATABASE `byte_test`

CHARACTER SET latin1

COLLATE latin1_general_ci;

javascript函数lengthInUtf8Bytes来自于String length in bytes in JavaScript

如果“长度”指的编码长度,还是假设页面utf8编码:

// javascript

len = str.length;

// php

$len = mb_strlen($str,"UTF-8");

// mysql

CREATE DATABASE `utf8_test`

CHARACTER SET utf8

COLLATE utf8_general_ci;

这样长度都是一致的,所以要在最开始就定义好你的“长度”指的是什么很重要

前台限制只是障眼法,数据库较量弄长点,不用太抠门了

如果你统一都使用UTF-8编码,就没有这个苦恼了。数据库表用UTF-8,一个汉字或字母都是一,也就是说varchar(2)类型,你肯定可以把 "测试” 这两个字存入。对应mysql实际存储会使用6个字节,通常情况下一个汉字需要用3个字节来存储,但这是mysql底层做的事,跟你定义的varchar里面的长度没有关系。

2楼好专业,赞

数据库字段不一定非要搞得那么精准,说十个字节就一定限制十个字节,限制长度是通过程序做的,数据库字段只是提供一个范围而已

如果可以后台也需要对参数进行长度校验,别人是可以直接请求后台服务接口的。

前端有对于的maxlength可以控制一下输入长度。

如果不怕麻烦的话,

你可以自己设计一个通用拦截器进行提交前检查,

首先获取数据库的元数据信息, 比如编码和字段长度(这个可以使用缓存的信息一般不会变化).

然后根据这个算出相应的字段最长能容纳几个汉字,几个英文字符.

之后在前端或者php计算出相应的字节数, 这样就不会有问题了.

不过性能会因此稍有损失.

更好的办法就是对不定长度的数据把字段使用变长类型比如varchar设计的足够大.

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php数据库字段设置长度,javascript - 表单字符长度与数据库字段长度相关推荐

  1. JavaScript将焦点设置为HTML表单元素

    本文翻译自:JavaScript set focus to HTML form element I have a web form with a text box in it. 我有一个带有文本框的W ...

  2. JavaScript表单验证,输入中文时字符长度为2

    获取输入框中的字符长度进行表单验证,当输入英文时字符长度就是1,当输入中文时字符长度为2. 字符数为4~16位, 上图: 一个中文抵两英文. 上代码 1 btn.addEventListener('c ...

  3. 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  4. webform快速创建表单内容文件--oracle 数据库

    使用方法 前台页面这样写就足够了 <form class="stdform" runat="server"><div id="fie ...

  5. 15个非常实用的JavaScript表单验证库

    来源:web前端开发 https://mp.weixin.qq.com/s/p9s9cmAt2MZeCgmD2LC5Sg 客户端验证在任何项目都是不可缺少的,很多时候我们需要在用户提交到服务器之前给予 ...

  6. 提交表单到mysql数据库_记录第一次实现表单数据提交到数据库

    ​经过几周的Web前端学习我初步对.html文件.php文件有了一定的了解.首先我们来复习一下学过的知识. HTML页面实际上就是静态的网页页面,我们可以用html+css(层叠样式表)来创作出具有不 ...

  7. javascript 表单验证大全(一)

    javascript 表单验证大全(一) 5.身份证验证:包括15位和18位.function idNumber(s)//身份证验证 {regu1=/^[1-9]\d{7}((0\d)|(1[0-2] ...

  8. JavaScript 表单专题

    JavaScript 表单专题 访问表单的方式 访问form表单控件的方式 Form 表单对象 Form 对象集合 Form 对象属性 Form 对象方法 Form 对象事件句柄 单行文本框 Text ...

  9. JavaScript 表单与表单验证

    JavaScript 表单 JavaScript 表单验证 HTML 表单验证可以通过 JavaScript 来完成. 以下实例代码用于判断表单字段(fname)值是否存在,如果存在,则弹出信息,否则 ...

最新文章

  1. 使用 SQL Server Mobile 创建移动应用程序
  2. android 组件(activity,service,content provider,broadcast receiver,intent)详解
  3. 获取ISAPI_Rewrite重写后的URL
  4. 【C++教程】03.第一个程序解析
  5. 我想做个MP3,要怎么入手?
  6. webstorm 使用别名(@)import @import 时异常的问题
  7. 单进程服务器-非堵塞模式(python版)
  8. 使用switch实现多选
  9. 基于大数据的数据仓库-数据仓库的概念
  10. excel多元线性拟合_使用Excel数据分析工具进行多元回归分析的方法
  11. SEO学习必上的网址大全
  12. Java实现手机号码、邮箱账号加密
  13. 苍松翠柏,自然景色非常优美
  14. 【Linux 编程】线程绑定 CPU
  15. 海康摄像机3D PTZ功能,拍照功能
  16. 微机原理与系统设计三:微处理器的结构与功能
  17. bodgeito通关教程
  18. 2023年如何实习QQ强制拉人入群,QQ批量拉群,QQ强制拉群软件开发定制的思路解析
  19. 未发表的2015年年终总结
  20. docker使用文档1

热门文章

  1. 联发科完成双模芯片实验室测试 首批5G终端明年一季度问世
  2. linux yum的用法【ZT】
  3. Java并发编程之调度线程池
  4. 为什么面试总喜欢考算法题?
  5. Bitmap详解(中)之像素级操作
  6. 被尘封的故事技能点bug_王者荣耀体验服更新,多名英雄技能优化,瑶妹玩家却坐不住了...
  7. 我的内核学习笔记5:proc目录文件创建及读写
  8. json转为tfrecord格式文件怎么转_word怎么转换成pdf格式?这样转很方便
  9. 【算法】159题 Longest Substring with at Most Two Distinct Characters 最大的子串
  10. 【Elasticsearch】Elasticsearch 的异步搜索原理解析 _async_search