sql >> Databasteknik >  >> RDS >> PostgreSQL

Infoga NULL i en PostgreSQL DB via PHP när ett datumfält är tomt

Ditt problem är att du har enstaka citattecken i din SQL:

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

så om $data[0] är strängen "NULL" , kommer du att sluta med detta:

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

och du kommer att försöka infoga en sträng som innehåller NULL snarare än själva NULL-literalen. Du måste göra din offert i $data värden snarare än 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])) . "'";
}

Och sedan senare:

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

Eller bättre, byt till PDO och använd förberedda uttalanden.



  1. Hur CHAR_LENGTH() fungerar i MariaDB

  2. Hur man hämtar data från markören i Oracle med hjälp av For Loop

  3. JOOQ misslyckas med PostgreSQL Custom Type som en Array:ERROR:felaktigt utformad post bokstavlig

  4. Är en Load DATA utan en fil (dvs i minnet) möjlig för MySQL och Java?