【问题标题】:MySQL Inserting NULL Into Varchar ColumnMySQL将NULL插入Varchar列
【发布时间】:2014-09-26 04:21:51
【问题描述】:

为什么我不能使用 MySQL 将 NULL 插入 varchar 列?

PHP:

if ($startSemester == "") {
    $startSemester = 'NULL';
}

mysqli_query($gradschool_application_2_connect, "INSERT INTO Application (startSemester) VALUES ('".$startSemester."')");

当前代码输入的是字符串NULL,而不是类型。如果我删除单引号,我的查询将不起作用。

【问题讨论】:

  • 列上是否有 NOT NULL 约束?
  • 它必须是 VALUES (NULL) 而不是 VALUES('NULL')。为此使用准备好的语句是个好主意。
  • 也许您的数据库字段设置为非空值?
  • 删除 $startSemester = NULL; 周围的引号会在数据库中输入一个空字符串。没有 NOT NULL 约束。
  • 请让世界变得更美好,不要编写极易受到 SQL 注入攻击的代码。

标签: php mysql


【解决方案1】:

半骗子:MySQL Inserting NULL Value into INT Column

你已经在查询中引用了你的 NULL 字符串,所以你正在生产

 ... VALUES ('NULL')

SQL null 是关键字,不能被引用

[..snip...]) VALUES ('".$startSemester."')");
                     ^------------------^--- remove these quotes

引用它会将其转换为包含字母NULL 的字符串,当插入到 int 字段中时将简单地转换为 0

【讨论】:

  • 如果$startSemester="Some string";怎么办?
  • 那么由 OP 来处理这种情况。
【解决方案2】:

试试这个:

mysqli_query($gradschool_application_2_connect, "INSERT INTO Application (startSemester) VALUES ($startSemester)");

【讨论】:

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