php - INSERT 语句是否有等效的 PDO::ATTR_ORACLE_NULLS ?

标签 php mysql insert null pdo

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

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

最佳答案

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

关于php - INSERT 语句是否有等效的 PDO::ATTR_ORACLE_NULLS ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8340473/

相关文章:

mysql - 如何使用SQL编辑mysql数据库中某列的多条记录

regex - sed 插入行命令 OSX

php - 无法从客户端网站连接到远程mysql服务器

php - MySQL : select the last action of each user

javascript - 将 json 数据从 PHP 传递到 javascript - Google 饼图

PHP/JQUERY - 为列数据创建超链接

php - MYSQL/PHP 搜索未找到数据库中的所有记录

mysql - 如何从 Homebrew 安装的 mysql 访问 mysql 提示符

php - Preg_replace 用 PHP 和 MySQL,允许破折号和括号

sql-server - 在批量插入查询中使用不可打印的字符(\0\n\t 除外)作为字段终止符参数