PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Insérer NULL dans une base de données PostgreSQL via PHP lorsqu'un champ de date est vide

Votre problème est que vous avez des guillemets simples dans votre SQL :

INSERT INTO product (first_field, second_field, third_field, my_date) 
VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]')

donc si $data[0] est la chaîne "NULL" , vous obtiendrez ceci :

INSERT INTO product (first_field, second_field, third_field, my_date) 
VALUES ('NULL', ...

et vous essaierez d'insérer une chaîne contenant NULL plutôt que le littéral NULL lui-même. Vous devrez faire votre citation à l'intérieur du $data plutôt qu'à l'intérieur de votre 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])) . "'";
}

Et puis plus tard :

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

Ou mieux, passez à PDO et utilisez des instructions préparées.