как использовать nullif () в запросе в форме php

Я пытаюсь импортировать файл csv в таблицу в PostgreSQL 13 и форму php (новичок).
В таблице есть два целочисленных типа внешних ключей, один может быть пустым. Поэтому, когда я импортирую файл, у меня появляется общее сообщение invalid input syntax for type integer для одного из них.
После this post, функция NullIf () кажется простым решением.

Я не могу найти правильный способ использовать его в:

$sql = "INSERT INTO activite.us (numus, gidgeo, gidaxe)
        VALUES ('".$getData[0]."','".$getData[10]."', NULLIF('".$getData[11]."', '') " ;

Внешний ключ - последняя переменная.

  • Я попытался заменить второй аргумент на NULL;
  • Я пробовал 'NULLIF("...")' и некоторые другие ложные комбо.

Как это исправить? Спасибо.


person Leehan    schedule 10.03.2021    source источник
comment
(Возможное) примечание: не используйте интерполяцию или конкатенацию строк для получения значений в SQL-запросах. Это подвержено ошибкам и может сделать вашу программу уязвимой для атак с использованием SQL-инъекций. Используйте параметризованные запросы.   -  person sticky bit    schedule 10.03.2021
comment
Это зависит от того, что на самом деле представляет собой синтаксическая ошибка, поэтому, пожалуйста, покажите все сообщение об ошибке в своем вопросе. Совершенно уверен, что NULLIF - это не ответ. Рекомендуется создать таблицу со всеми varchar полями и импортировать в нее, а затем выполнить очистку при / перед переносом в окончательную таблицу.   -  person Adrian Klaver    schedule 10.03.2021


Ответы (1)


(Даже если PDO было бы лучше), ответ будет

NULLIF('".$getData[11]."', '')::integer)
person Leehan    schedule 11.03.2021