1

下面是我为注册时事通讯创建的表格和表格。当我尝试在表单中输入新人时,我收到此消息。我该怎么做才能解决这个问题?

**字段 'ip_address' 没有默认值 INSERT INTO memberSET join_date = NOW() , first_name= 'John', last_name= 'D', email= 'jd@aol.com'

字段 'unsubscribe_date' 没有默认值 INSERT INTO memberSET join_date = NOW() , first_name= 'John', last_name= 'D', email= 'jd@aol.com'

字段 'unsubscribe_send_id' 没有默认值 INSERT INTO memberSET join_date = NOW() , first_name= 'John', last_name= 'D', email= 'jd@aol.com'**

这是我的表格:

    <table cellpadding="3" width="100%">
    <tbody>
        <tr>
            <td>Email <span class="required">*</span></td>
            <td><input type="text" class="text_input" name="email" value=""></td>
        </tr>
        <tr>
            <td>First Name <span class="required">*</span></td>
            <td><input type="text" class="text_input" name="first_name" value=""></td>
        </tr>
        <tr>
            <td>Last Name</td>
            <td><input type="text" class="text_input" name="last_name" value=""></td>
        </tr>
                    <tr>
            <td>
            Subscribed Communication
            </td>
            <td>
                <table>
                                                <tr>
                            <td><input type="checkbox" name="group_id[]" value="2" checked></td>
                            <td>RaceO'Clock Members</td>
                        </tr>
                                                                </table>
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" name="submit" value="Subscribe!"> <br/>
                <em>* required fields</em>
            </td>
        </tr>
    </tbody>
    </table>


    </form>

这是我的桌子:

CREATE TABLE IF NOT EXISTS `member` (
  `member_id` int(11) NOT NULL auto_increment,
  `first_name` varchar(255) NOT NULL,
  `last_name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `join_date` date NOT NULL,
  `ip_address` varchar(15) NOT NULL,
  `unsubscribe_date` date NOT NULL,
  `unsubscribe_send_id` int(11) NOT NULL,
  PRIMARY KEY  (`member_id`)
)  DEFAULT CHARSET=utf8;
4

3 回答 3

2

这是由 %PROGRAMDATA%\MySQL\MySQL Server 5.6\my.ini 文件中定义的 STRICT_TRANS_TABLES 引起的。删除该设置后,重新启动 MySQL 以解决问题。

于 2013-11-12T12:09:02.787 回答
2

在插入语句中需要不带默认值的非空字段。

你有三个选择:

  1. 定义默认值
  2. 更改列定义以允许 null
  3. 将该列添加到插入语句
于 2013-09-14T19:24:45.453 回答
1

您正在创建包含所有列的表,这意味着当您插入值时NOT NULL列不能。NULL

如果你想 makeNOT NULL那么你应该DEFAULT为这个列赋值。

用这个:

     CREATE TABLE IF NOT EXISTS `member` (
     `member_id` int(11) NOT NULL auto_increment,
     `first_name` varchar(255) ,
     `last_name` varchar(255) ,
     `email` varchar(255) ,
      `join_date` date ,
      `ip_address` varchar(15),
      `unsubscribe_date` date ,
      `unsubscribe_send_id` int(11) ,
     PRIMARY KEY  (`member_id`)
    )  DEFAULT CHARSET=utf8;

或者将该列添加到插入语句并插入一个空字符串。

像那样:

INSERT INTO member SET join_date = NOW() , 
                      first_name = 'John', 
                       last_name = 'D',
                           email = 'jd@aol.com' ,
                      ip_address = '' ,
                unsubscribe_date = '',
             unsubscribe_send_id = ''
于 2013-09-14T19:24:53.180 回答