你的问题是你的 SQL 中有单引号:
INSERT INTO product (first_field, second_field, third_field, my_date)
VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]')
so if $data[0]
是字符串"NULL"
,你最终会得到这样的结果:
INSERT INTO product (first_field, second_field, third_field, my_date)
VALUES ('NULL', ...
并且您将尝试插入一个包含 NULL 而不是 NULL 文字本身的字符串。你必须在里面引用$data
值而不是 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])) . "'";
}
然后后来:
pg_query($_db, "INSERT INTO product (first_field, second_field, third_field, my_date)
VALUES ($data[0], $data[1], $data[2], $data[3])";
或者更好的是,切换到PDO http://php.net/manual/en/book.pdo.php并使用准备好的语句。