sql >> Databáze >  >> RDS >> PostgreSQL

Když je pole data prázdné, vložte NULL do PostgreSQL DB přes PHP

Váš problém je v tom, že máte v SQL jednoduché uvozovky:

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

takže pokud $data[0] je řetězec "NULL" , skončíte s tímto:

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

a budete se snažit vložit řetězec, který obsahuje NULL spíše než samotný literál NULL. Budete muset udělat citaci uvnitř $data hodnot spíše než uvnitř vašeho 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])) . "'";
}

A pak později:

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

Nebo lépe, přepněte na CHOP a použít připravené výpisy.



  1. Pořadí Mysql podle konkrétních hodnot ID

  2. Jak získat věk pomocí sloupce BirthDate pomocí dotazu MySQL?

  3. Escape raw SQL dotazy v Laravel 4

  4. Změna písma v MySQL Workbench