在MySQL中有DEFAULT
关键字,让数据库知道它应该只使用列定义的默认值:
使用关键字DEFAULT将列显式设置为其默认值 值。这使得编写分配的INSERT语句变得更容易 除了几列之外的所有值,因为它可以让您避免 写一个不包含值的不完整的VALUES列表 表格中的每一列。否则,你必须写出来 与VALUES列表中的每个值对应的列名列表。
理论上,这对于准备好的INSERT语句很好。问题是,PHP doesn't seem to have是一种将?
占位符与DEFAULT
关键字绑定的方式,就像NULL
(PDO::PARAM_NULL
)一样。那么如何实现一个完全通用的,因此可重用,准备好的语句,其中一些参数应该在某些时候接受默认值(事先不知道它)?
我目前正在开发一个瘦数据库模型层,这使我无法充分利用预处理语句,如果你想将它用于大量插入,这就是一件事。
答案 0 :(得分:0)
只需从INSERT
语句中删除要使用默认值填充的列,明确指定执行的列名放置非必需的默认值。
编辑:如果你想要一个“完全通用的,可重复使用的,准备好的声明”,你就无法拥有它。与您提出的问题最接近的是以下解决方法:
INSERT INTO TABLE theTable (column1, column2, column3) VALUES
(COALESCE(?,DEFAULT(column1)),
(COALESCE(?,DEFAULT(column2)),
(COALESCE(?,DEFAULT(column3)))
这种方法意味着您在需要DEFAULT时传递NULL,但部分满足您的要求,因为列的名称已修复。