PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Inserisci NULL in un DB PostgreSQL tramite PHP quando un campo data è vuoto

Il tuo problema è che hai virgolette singole all'interno del tuo SQL:

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

quindi se $data[0] è la stringa "NULL" , ti ritroverai con questo:

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

e proverai a inserire una stringa che contiene NULL anziché il valore letterale NULL stesso. Dovrai quotare all'interno di $data valori anziché all'interno del tuo 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 poi dopo:

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

O meglio, passa a DOP e utilizzare dichiarazioni preparate.