mysql5.0 由于虚拟主机的限制
插入字段如果是整形数据比如说 wr_hit int(10),那么如果wr_hit没有指定值的话,就会报错
也就是说 insert wr_table wr_hit = ''这会报错,insert wr_table wr_hit = '0' 才算正确
但是表格中有很多这样的字段,程序的开始阶段这些字段是没有经过处理的,所以他们的默认值都是'',如果要吧所有的这些字段在加上一句判断 if(!$wr_hit) $wr_hit = 0;这会是一个很大的工作量。有没有简单的方法避免mysql报错呢由于是虚拟主机,修改服务器参数的方法显然是不行了

解决方案 »

  1.   

    你的insert SQL语句是什么?[align=center]====  ====
    [/align]
      

  2.   

    insert wr_table wr_hit = '$wr_hit',wr_1 = '$wr_1' ... where wr_id = 10;
      

  3.   

    insert wr_table wr_hit = case when '$wr_hit'='' then 0 else '$wr_hit' end ,wr_1 = '$wr_1' ... where wr_id = 10;用CASE WHN试试[align=center]====  ====
    [/align]
      

  4.   

    在文件的开头直接写入$wr_hit = 0;
    程序执行中如果有新值会重新赋给$wr_hit;
    不知道你的程序这样执行是否可以
      

  5.   

    我现在的做法就是 wanglinmingtina 说的那样,不过也是没有办法的办法,但是这种变量程序中有很多啊,比如说wr_1,wr_2,wr_3等等等,此外还有别的表格都出现类似的问题,现在也只有哪里出现问题,哪里在强制他=0。要有一个办法可以解决所有的变量此种问题就好了
      

  6.   


    建议之前在PHP里判断。
    不要交给MYSQL 来做。
    if ($wr_hit == '') then
      ...
    else
    ...
    $query = 'insert wr_table wr_hit = '.$wr_hit.',wr_1 = '.$wr_1.' ... where wr_id = 10';
      

  7.   

    为什么会出现"insert wr_table wr_hit = ''"呢?
    在程序里,用javascript 写个js来判断啊.
    不用交给mysql来做啊.
      

  8.   

    出现"insert wr_table wr_hit = ''" 也是有原因的啊
    比如说一次输入 只需要输入名字和性别 还有个人介绍或者 其他什么的不是强制要输入的内容那么如果客户没有填写就会出现空值.
      

  9.   

    组sql语句之前,所有的数据都if else判断了,然后再写insert into语句
      

  10.   

    sql 查询应为默认空值出错
    有一个整形的字段 程序中没有赋值就会出现
    Incorrect integer value  错误有没有好办法避免这种错误出现   实际情况是程序中这种字段会有很多比如说 程序sql语句如下 
    $sql = "
                    bo_use_sideview     = '$bo_use_sideview',
                    bo_use_file_content = '$bo_use_file_content',
                    bo_use_secret       = '$bo_use_secret',
                    bo_use_dhtml_editor = '$bo_use_dhtml_editor',
                    bo_use_rss_view     = '$bo_use_rss_view',
                    bo_use_comment      = '$bo_use_comment',
                    bo_use_good         = '$bo_use_good',
                    bo_use_nogood       = '$bo_use_nogood',
                    bo_use_name         = '$bo_use_name',
                    bo_use_signature    = '$bo_use_signature',
                    bo_use_ip_view      = '$bo_use_ip_view',
                    bo_use_trackback    = '$bo_use_trackback',
                    bo_use_list_view    = '$bo_use_list_view',
                    bo_use_list_content = '$bo_use_list_content',
    "
    以上所有的字段在数据库中都是 int(1)类型的
    而这些设定在页面上表现为checkbox  <input type=checkbox name = bo_user_list_view value=1>这样如果某些设定用户没有选择在程序中就会出空值 (bo_use_list_view    = ''),从而出现
    incorrect integer value  错误我所知道的解决办法就是 if来判断,如果为空的话 个他赋值为0这样就不会出错
    但是如果要用判断语句那样改起来,有这么多的if 很麻烦哦
    有么有别的好办法,可以一次全部解决这种问题另外本地不会出现这样的问题,那肯定是由于mysql哪个地方做了限制所以不允许这种情况出现,或者告诉我这个限定在哪里去掉也好
    这样说会不会清楚一点