仅数据列表验证选项[重复]
Posted
技术标签:
【中文标题】仅数据列表验证选项[重复]【英文标题】:data list validate options Only [duplicate] 【发布时间】:2019-11-17 12:39:37 【问题描述】:我只想接受选择值。但目前如果用户输入例如:“opra”并且它接受该值到我的数据库。这是搜索选项框
<input list="brow">
<data list id="brow">
<option value="Internet Explorer">
<option value="Firefox">
<option value="Chrome">
<option value="Opera">
<option value="Safari">
</data list>
【问题讨论】:
请简述您的问题 使其成为选择而不是数据列表。然后在php中验证该选项是否有效 数据列表将作为推荐选项,但如果您只想选择一些值,请尝试使用选择标签 您应该在将用户输入发送到数据库之前验证无论如何——无论您在表单中提供什么元素。在提交之前或提交后提供客户端验证更精细,服务器端验证更多的是保持数据清洁、稳定和安全的要求。您的选项列表并不长,只需使用<select>
。你让这项工作变得比它需要的更难。
【参考方案1】:
当您将输入值发送到服务器时,如果该值不在您显示错误标签的选项中,您可能会有验证逻辑。
【讨论】:
【参考方案2】:在大多数数据库中,这将使用check
约束来处理:
alter table t check (browser in ( <valid values go here> ) )
不幸的是,mysql 接受检查约束的语法,但实际上并没有实现它们。
这让您有四个选择:
-
在 MySQL 8+ 中,您可以使用
with check option
创建视图。这可能是最好的方法。
在参考表中维护可接受值的列表。
使用枚举类型。
使用触发器强制执行该值。
在早期版本中,第二种方法可能是最好的。您可以从browsers
表中获取browser_id
,作为您正在做的任何事情的前奏。如果browser_id
不存在,则返回相应的错误。
【讨论】:
以上是关于仅数据列表验证选项[重复]的主要内容,如果未能解决你的问题,请参考以下文章