我正在开发一种工具,可以根据数据库中的表创建 PHP 类。大多数功能都基于来自 SHOW COLUMNS FROM $table
的数据。每列通常与正在创建的新类中的一个实例变量相关。
我现在遇到的情况是,如果用户为与 INT 类型的列相关的变量传入“12”,它不会失败,但数据库中的值变为 0。
我希望类返回 false,表明 UPDATE
或 INSERT
无法完成。
您会为此推荐什么方法?
我现在正在尝试的是构造一个列名数组,其中包含具有数字数据类型(INT、FLOAT 等)的每一列。当用户尝试设置变量时,它会检查变量是否在此列表中,然后检查设置的值以确定它是否为数字。
使用 MySQLi 的 PHP 5.3.3
我假设任何非数字的列都将接受文本数据。
最佳答案
你问的是ORM。 PHP 中有一些不错的 ORM 库。
顺便说一句,我回答你的问题。
如果设置了任何无效数据,您可以抛出异常。
查看示例。
class MyTable extends DbTable{
function __set($var, $val){
switch($var){
case 'age': // age should be numeric type
if(!is_numeric($val)){
throw new InvalidDataTypeException("$val of $var is not numeric");
}
/// do other operation here
...
... // more cases
}
}
}
关于php - 基于 MySQL 列数据类型的动态 PHP 代码创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007110/