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

Indsæt NULL i en PostgreSQL DB via PHP, når et datofelt er tomt

Dit problem er, at du har enkelte anførselstegn inde i din SQL:

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

så hvis $data[0] er strengen "NULL" , vil du ende med dette:

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

og du vil prøve at indsætte en streng, der indeholder NULL i stedet for selve NULL-literalen. Du bliver nødt til at citere i $data værdier i stedet for inde i din 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])) . "'";
}

Og så senere:

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

Eller bedre, skift til PDO og brug forberedte udsagn.



  1. Migrering af Amazon RDS (MySQL eller MariaDB) til en On-Prem Server

  2. Golang MySQL forespørger om udefineret antal args ved hjælp af IN-operator

  3. 5 tips og tricks til at hjælpe dig med at administrere din onlinedatabase

  4. Xamarin Android App med online MySql/Sql database