我有一个用户看起来像这样的对象。
$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 对象并从它拥有的所有属性中创建一个数组,并将该数组提供给我在执行参数中准备好的 PDO 语句。这工作正常,该函数将数据插入数据库。
我的问题是,有时我还没有填充对象的所有属性,因此我填充了数组的其余部分,这些数组用空字符串提供执行函数。当它到达一个接受整数的字段时,它会导致致命错误并且不起作用。我可以做些什么来动态地将空字段插入到我的数据库中,而无需为代码中的每个字段编写正确的数据类型?因为这一切都是动态完成的,所以我无法提前知道将整数或空字符串放在那里。有没有办法完全省略一些占位符?还有其他解决方案吗?