【问题标题】:MySQL Inserting NULL Value into INT ColumnMySQL将NULL值插入INT列
【发布时间】:2014-09-25 18:29:49
【问题描述】:

我知道以前有人问过这个问题。我找到了这篇文章,但是它并没有解决我的问题,因为我的专栏确实允许为空。

我想在我的整数列中插入一个 NULL 值。

if ($startYear == "") {
    $startYear = NULL;
}

mysqli_query($con, "INSERT INTO Application (startYear) VALUES ('".$startYear."')");

在你问之前,我已经检查了 $startYear 是否曾经为空,并且确实如此,所以这应该可以。

当我运行这个查询时,它会在数据库行中输入一个0。它不会像我想要的那样插入NULL

这是我的专栏的结构:

http://i.imgur.com/XuWq9Km.png

重要的一点是,我不能修改列的结构。这是禁区。

提前致谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    问题是您实际上并没有在查询中插入字符串“NULL”,而是一个 php null,这会使您的查询插入空字符串,这在数据库中被转换为 0。

    你需要这样做:

      mysqli_query($con, "INSERT INTO Application (startYear) VALUES (NULL)");
    

    【讨论】:

    • @Nic 这是否正确回答了您的问题?如果是,请将其标记为正确。如果没有,有更好的答案吗?
    【解决方案2】:

    您正在插入一个 PHP 空值,它在字符串上下文中使用时会变成一个空字符串 - 这就是最初的样子。您必须插入带有字母 nu,l,l` 的文字字符串才能使其工作:

    if ($startYear == '') {
       $startYear = 'NULL'; // string null
    }
    $sql = "INSERT ..... VALUES ($startYear)";
    

    会产生

    INSERT ... VALUES (NULL)
    

    展开:

       $foo = null; // actual PHP null value
       $bar = "$foo"; // insert this php null into a string
       echo strlen($bar); // returns 0
    
       $foo = 'null' // string with 4 letters: n,u,l,l
       $bar = "$foo";
       echo strlen($bar); // returns 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      相关资源
      最近更新 更多