本帖最后由 freeqiong 于 2011-01-15 00:23:09 编辑

解决方案 »

  1.   


    楼主贴一个message表就够了,`f_id` int(11) NOT NULL 你这个字段显示是not null 而你插入为空,数据库会报错的,是不是这个问题?
      

  2.   

    很简单,注意你贴出的文本中的第一句 
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";把这个去掉。
    或者直接执行SET SQL_MODE=‘’;
      

  3.   

       NO_AUTO_VALUE_ON_ZERONO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。mysqldump在输出中自动包括启用NO_AUTO_VALUE_ON_ZERO的语句。
    狼头哥这么迟了还没休息
      

  4.   

    把这一行去掉
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
      

  5.   

    现在我把数据表做了修改,比如:
    --
    -- 表的结构 `user`
    --CREATE TABLE `user` (
      `u_id` int(11) NOT NULL auto_increment COMMENT '用户ID',
      `is_mask` tinyint(1) default '0' COMMENT '是否被屏蔽',
      `s_num` int(11) default NULL COMMENT '顺序号',
      `u_name` varchar(20) collate utf8_bin NOT NULL COMMENT '用户登录名',
      `cn_name` varchar(40) collate utf8_bin NOT NULL COMMENT '用户中文名',
      `u_password` varchar(32) collate utf8_bin NOT NULL COMMENT '用户密码',
      `group` int(3) NOT NULL COMMENT '群组',
      `u_rights` int(2) NOT NULL COMMENT '用户权限',
      `u_re` varchar(255) collate utf8_bin default NULL COMMENT '备注',
      `u_jointime` int(10) default NULL COMMENT '最后登录时间',
      PRIMARY KEY  (`u_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=65 ;可是我还是不能用以下sql语句插入数据,因为is_mask字段没有得到数据,可是我不是已经设置了这个字段可以为NULL,且默认值为0了吗?INSERT INTO `user` (`s_num`,`u_name`,`cn_name`,`u_password`,`is_mask`,`group`,`u_rights`,`u_re`,`u_jointime`) VALUES ('64','zs','张三','aaa','','1','5','zs','1295358581') 
      

  6.   

    贴出你 show create table ... 还有你的insert into之后的完整错误信息以供别人分析。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  7.   


    我试了下;会报一个warning;原因就是你的is_mask是int类型,而你的''是一个空的字符串.会报错,既然这个字段已经有默认值了,而楼主又不会给这个字段赋值.为什么不改成:
    INSERT INTO `user` (`s_num`,`u_name`,`cn_name`,`u_password`,`group`,`u_rights`,`u_re`,`u_jointime`) VALUES ('64','zs','张三','aaa','1','5','zs','1295358581') 
    这样?
    不显示出is_mask字段;
      

  8.   

      回楼上两位,user表的结构我不是在10楼给出了吗?而且php里面执行完只是没有效果,并没有错误提示。服务器上没有装phpmyadmin,我不太清楚该怎么看错误提示。
      并不是不会给这个字段赋值,而是有时候要赋值,有时候不需要。另外我给它一个''是想让它按默认值插入。
    另,这个情况很奇怪,在我本机的mysql上只要给''就会自动根据字段类型插入数值,int型就是0。 但是在服务器上的mysql却不会这样。是不是mysql哪里设置不同造成的?
      

  9.   

    这个应用就好像一个注册表单,里面有很多输入框,有些是必填的,有些是选填的。那么当一些框没有填的时候该怎么写sql?
      

  10.   

    你自己手动输入好了.要是想''的话就把''变成0;为什么会这样,可能就是楼上说的SQL_MODE的问题..