Есть ли эквивалент PDO :: ATTR_ORACLE_NULLS для операторов INSERT? - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть функция, которая считывает данные из одной базы данных, форматирует и немного объединяет их и вставляет в другую.Однако любая строка с отсутствующими данными для определенных столбцов должна быть отклонена целевой базой данных.Я хотел сделать это, поместив ограничения NOT NULL на соответствующие столбцы в целевой таблице, чтобы операторы INSERT просто не выполнялись, когда эти значения равны NULL.

Однако при развертывании моего отформатированногомассивы исходных данных Я использую кавычки для каждого значения, чтобы иметь возможность объединить их с остальной частью строки INSERT sql.Я планировал использовать атрибут PDO :: ATTR_ORACLE_NULLS для преобразования всех пустых строк (NULL в исходных данных) в NULL в INSERT, но теперь оказывается, что это влияет только на результаты запросов SELECT, а не на операторы INSERT.Кто-нибудь знает элегантный и быстрый способ заставить MySQL или объект PDO обрабатывать все пустые строки в операторах INSERT как NULL?

1 Ответ

1 голос
/ 01 декабря 2011

Oracle обрабатывает пустые строки как NULL. Это не то, что делает MySQL. Однако вы можете выполнить замену array_map(function ($element) { return $element ? $element : NULL; }, $arguments); перед передачей в PDO. (Или $element === '' ? NULL : $element в зависимости от того, как вы хотите обработать 0 и '0')

...