MySQL字段不能为空错误,虽然字段应该允许值为空

问题描述:

我有以下语句将记录插入到数据库中。但与name场每个记录为空值,我得到以下错误:MySQL字段不能为空错误,虽然字段应该允许值为空

Did not insert statement:Column 'name' cannot be null 

代码:

function insertintomailinglist($user_id,$mail_list,$name,$surname,$company_name,$email_address,$number){ 
     if ($stmt = $this->link->prepare("INSERT INTO `mail_lists_list`(user_id, mail_lists_id, name, surname, company_name, email_address ,cell_number) VALUES(?, ?, ?, ?, ?, ?, ?);")){ 
       // Bind the variables to the parameter as strings. 
       $stmt->bind_param("iisssss",$user_id,$mail_list,$name,$surname,$company_name,$email_address,$number); 
       // Execute the statement. 
       $stmt->execute(); 
       // Close the prepared statement. 
       echo '<p> Did not insert statement:'.$stmt->error.' </p>'; 
       $stmt->close(); 
      } 
    } 

如果我编辑的MySQL表,并设置默认值NULL,则语句执行。但不是没有默认值...

这是不正确的,因为我知道mysql字段应允许有一个NULL值。

这可能是什么原因造成的?

+0

设置MySQL列值默认为空将帮助解决这一问题就完事了,如果你将列定义为NOT NULL,这意味着不能输入NULL值 –

+2

如果向我们显示表的元数据可能会有所帮助 –

单词name是保留字,不应作为列名使用。

https://dev.mysql.com/doc/refman/5.5/en/keywords.html

因此,为了使用它,你必须在反引号来包装列名,即`name`

+0

我在数据库中将name更改为first_name,现在我只是在下一个字段中出现错误:Did不插入语句:列“姓氏”不能为空 – Marcel