2015-06-21 77 views
0

我有以下語句將記錄插入到數據庫中。但與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

如果向我們顯示錶的元數據可能會有所幫助 –

回答

0

單詞name是保留字,不應作爲列名使用。

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

因此,爲了使用它,你必須在反引號來包裝列名,即`name`

+0

我在數據庫中將name更改爲first_name,現在我只是在下一個字段中出現錯誤:Did不插入語句:列「姓氏」不能爲空 – Marcel

相關問題