sql >> Database >  >> RDS >> PostgreSQL

Voeg NULL in een PostgreSQL DB via PHP wanneer een datumveld leeg is

Uw probleem is dat u enkele aanhalingstekens in uw SQL hebt:

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

dus als $data[0] is de string "NULL" , krijg je dit:

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

en je zult proberen een tekenreeks in te voegen die NULL bevat in plaats van de NULL-letterlijke zelf. U moet uw citeren doen binnen de $data waarden in plaats van in uw 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])) . "'";
}

En dan later:

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

Of beter, schakel over naar BOB en gebruik voorbereide verklaringen.



  1. Exporteer specifieke rijen uit een PostgreSQL-tabel als INSERT SQL-script

  2. Hoeveel sneller is MyISAM vergeleken met InnoDB?

  3. magento tabel sales_flat_order veld protect_code uitleg

  4. met behulp van MySql.Data.MySqlClient; werkt niet