【发布时间】:2011-03-12 07:25:57
【问题描述】:
当我向 mySQL 数据库提交表单字段时,有没有办法将数据库设置为自动丢弃超过数据字段长度的任何数据?
我知道我可以通过编程来完成,但是可以将数据库设置为丢弃多余的部分而不引发错误吗?
为清楚起见编辑
这是我的插入语句
<cfquery datasource='#arguments.dsn#' name="addPatient">
INSERT INTO patients(patientFirstname
,patientLastname
,nhsNumber
,patientDOB
,patientTitle
,address1
,address2
,address3
,address4
,postcode
,patientPhone1
)
VALUES (<cfqueryparam value="#arguments.patientFirstname#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.patientLastname#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.nhsNumber#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.patientDOB#" cfsqltype="CF_SQL_TIMESTAMP"/>
,<cfqueryparam value="#arguments.patientTitle#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.address1#" cfsqltype="CF_SQL_VARCHAR"/>
,<cfqueryparam value="#arguments.address2#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.address3#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.address4#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.postcode#" cfsqltype="CF_SQL_LONGVARCHAR"/>
,<cfqueryparam value="#arguments.patientPhone1#" cfsqltype="CF_SQL_VARCHAR"/>
)
</cfquery>
table 字段 PatientPhone 是 VARCHAR(20)
如果我不以编程方式验证提交并且只是输入一个 30 个字符长的表单值,我会出错(当我认为它会做的只是存储前 20 个字符时)
Data truncation: Data too long for column 'patientPhone1' at row 8
当我使用向导设置数据库时,我记得选择了 innodb 以及事务和传统仿真(如果我没记错的话,这是推荐的)
【问题讨论】:
标签: mysql