将变量的数据库值设置为NULL而不是空字符串

时间:2011-11-11 16:01:12

标签: php sql database insert null

在我的SQL数据库中有很多这样的字段: 字段类型:文本空:是默认值:NULL

我的INSERT看起来像这样:

INSERT INTO tbl (col,col,col,...) VALUES ('val','val','val',...)

现在,我的INSERT语句的值中的引号是在我真正想要的东西(NULL)中插入''(空字符串)到数据库中。

所以我试过

if (isset($_POST['title'])) {$newTitle = mysql_real_escape_string(trim($_POST['title']));} else {$newTitle = NULL;}

并且只插入'NULL' - 包含单词NULL的字符串。

我可以做些什么来确定我的NULL值是否正确插入?

4 个答案:

答案 0 :(得分:2)

您可以尝试添加NULL而不使用下面的引号示例:

INSERT INTO tbl (col,col,col,...) VALUES (NULL,'val','val',...)

还要确保要使用纯null的列必须勾选允许的空值

答案 1 :(得分:2)

你所拥有的是好的,但你需要将它与准备好的陈述相结合......

 // prepare the statement
    $stmt = $mysqli->prepare("INSERT INTO tbl (title, x,y,z) values (?,?,?,?)");

    $stmt->bind_param($newTitle, $x,$y,$z);

    $x = 'hello, world';
 // execute prepared statement
    $stmt->execute(); 

如果x或newTitle为NULL,则它们在DB

中将为NULL

答案 2 :(得分:0)

不要在INSERT INTO中指定字段或提供值。 如果你有3个字段,f1 f2 f3 你呢

INSERT INTO tbl (f1, f3) VALUES ('something', 'something')

然后不会插入f2并默认为null。

答案 3 :(得分:-1)

我使用'0'而不是null。使用if语句时,可以运行

之类的查询
if($row['f2'] == 0){...

而不是null:)