PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserir NULL em um banco de dados PostgreSQL via PHP quando um campo de data estiver vazio


Seu problema é que você tem aspas simples dentro do seu SQL:
INSERT INTO product (first_field, second_field, third_field, my_date) 
VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]')

então se $data[0] é a string "NULL" , você terminará com isso:
INSERT INTO product (first_field, second_field, third_field, my_date) 
VALUES ('NULL', ...

e você estará tentando inserir uma string que contém NULL em vez do próprio literal NULL. Você terá que fazer sua cotação dentro do $data valores em vez de dentro do seu SQL:
# Warning: my PHP is a bit rusty but I think this is right
if(empty($data[0])) {
    $data[0] = "NULL";
}
else {
    $data[0] = "'" . pg_escape_string(utf8_encode($data[$c])) . "'";
}

E depois mais tarde:
pg_query($_db, "INSERT INTO product (first_field, second_field, third_field, my_date) 
    VALUES ($data[0], $data[1], $data[2], $data[3])";

Ou melhor, mude para PDO e use declarações preparadas.