我可以让mysql对它收到的数据类型不那么严格吗?

Zev*_*cht 4 php mysql pdo

我有一个用户看起来像这样的对象.

$user = new User();
$user->name = 'Name';
$user->age = 34;
Run Code Online (Sandbox Code Playgroud)

在我的数据库中有五个字段,

id, name, age, location, reputation
Run Code Online (Sandbox Code Playgroud)

我有一个方法(对于我的所有表)使用以下SQL从表中动态收集所有字段.这样我就可以动态地获取要放在INSERT语句中的占位符数.

SHOW FIELDS FROM users
SHOW FIELDS FROM questions
SHOW FIELDS FROM topics
Run Code Online (Sandbox Code Playgroud)

然后我编写了一个create方法,它计算表中字段的数量,并准备一个充满占位符的字符串,并自动将其插入到我的PDO查询中,使得:

INSERT INTO users VALUES (?, ?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

然后我接受我的$ user对象并从它拥有的所有属性中创建一个数组,并将该数组提供给execute参数中的PDO预处理语句.这工作正常,该函数将数据插入数据库.

我的问题是,有时我还没有填充我的对象的所有属性,因此我填充了用空字符串提供执行函数的数组的其余部分.当它到达一个取整数的字段时,它会导致致命错误并且不起作用.如果不为代码中的每个字段编写正确的数据类型,我能够动态地将空字段插入到我的数据库中,该怎么办?因为这一切都是动态完成的,所以我不能提前知道在那里放一个整数或一个空字符串.有没有办法完全省略一些占位符?还有其他方法吗?

jko*_*ech 5

将可选的mysql字段设置为接受NULL.