我有一个用户,一个对象看起来像这样。
$user = new User();
$user->name = 'Name';
$user->age = 34;在我的数据库中有五个字段,
id, name, age, location, reputation我有一个方法(对于我所有的表),它使用下面的SQL动态地从一个表中收集所有字段。通过这种方式,我可以动态地获取要放入INSERT语句中的占位符的数量。
SHOW FIELDS FROM users
SHOW FIELDS FROM questions
SHOW FIELDS FROM topics然后,我编写了一个create方法,该方法计算表中字段的数量,准备一个包含占位符的字符串,并自动将其插入到我的PDO查询中,实现如下所示:
INSERT INTO users VALUES (?, ?, ?, ?, ?)然后,我使用我的$user对象,用它拥有的所有属性创建一个数组,并在execute参数中将该数组提供给我的PDO prepared语句。这可以很好地工作,并且函数将数据插入到数据库中。
我的问题是,有时我还没有填充对象的所有属性,因此我填充了数组的其余部分,这些数组向execute函数提供空字符串。当它到达一个接受整数的字段时,它会导致一个致命错误,并且不起作用。如何才能在不为代码中的每个字段编写正确的数据类型的情况下,将空字段动态插入数据库?因为这都是动态完成的,所以我不能提前知道在那里放一个整数或一个空字符串。有没有办法完全省略一些占位符?还有其他的解决方案吗?
发布于 2012-08-27 02:43:29
将可选的mysql字段设置为接受NULL。
https://stackoverflow.com/questions/12132811
复制相似问题