如何根据数据库模式验证表单输入


How to validate form inputs with respect to database schema?

在团队中开发更大的系统时,通常会有单独的人来实现应用程序和数据库。在这种情况下,首先出现的是数据库设计和实现:数据库开发人员使用某种建模工具设计和创建表。作为应用程序开发人员,您可能会尝试在应用程序代码中从头开始创建和添加规则。但是,这样就重复了工作,因为在每个DB表中已经设置了实际的列类型和长度限制。此外,如果数据库开发人员负责更新数据库,那么当你忘记更新应用程序端的规则时,可能会出现错误。因此,您只需要从现有的数据库模式表中获取这些规则,并"挂载"到您的输入验证(或模型)类。

所以,问题是有没有通用的方法(和示例)、库或框架来说明应该如何做到这一点。我看过具有规则的Codeigniter框架,但是这些规则不是从现有数据库中捕获的,您需要显式地定义它们。

p。最可取的是简单(但足够)的解决方案,因为我已经使用了一个轻量级的Codeigniter-like框架,我不想依赖于重量级的方法。

您可以尝试Zend_Db_Table_Abstract。虽然Zend框架需要一些初始设置,但您可以只使用项目所需的部分(与其他一些PHP框架相反)。您可以使用describeTable()方法来发现关于表结构的一些信息,并且您可以重载insert()函数来显式检查类型,或者执行您需要的任何其他验证。

另一个可能的选择是fSchema,它是groovy库的一部分。

都是模块化的,文档齐全,易于使用。