INSERT语句是否有PDO :: ATTR_ORACLE_NULLS等价物?

时间:2011-12-01 11:17:42

标签: php mysql insert null pdo

我有一个函数可以从一个数据库读取数据,格式化并重新组合它们并将它们插入到另一个数据库中。但是,目标数据库应拒绝任何缺少某些列数据的行。我想这样做的方法是在目标表的相关列上放置NOT NULL约束,这样当这些值为NULL时,INSERT语句就不会被执行。

但是,在对我的格式化源数据进行插入时,我在每个值上使用引号,以便能够立即将它们与sql INSERT字符串的其余部分连接起来。我计划在INSERT上使用PDO :: ATTR_ORACLE_NULLS属性将所有空字符串(源数据中的NULL)转换为NULL,但现在事实证明这似乎只影响SELECT查询的结果,而不是INSERT语句。有没有人知道一种优雅而快速的方法来告诉MySQL或PDO对象将INSERT语句中的所有空字符串视为NULL?

1 个答案:

答案 0 :(得分:1)

Oracle将空字符串视为NULL。这不是MySQL所做的事情。但是,在传递给PDO之前,您可以执行array_map(function ($element) { return $element ? $element : NULL; }, $arguments);替换。 (或$element === '' ? NULL : $element取决于您希望如何处理0'0'