|
问题解决了,解决方案如下:
如果碰到这种情况的朋友,就知道怎么处理了
问题: 前台注册会员 提示注册成功 但是后台没有记录
通过我们排查 发现一个问题,就是在注册的时候 QQ必须填写. 如果QQ不填写 那么虽然提示注册成功了.但后台没有记录
因为我们的QQ是 int 类型的字段
上网一查,原来 Int类型的字段 在mysql 5.0 或5.1 的数据库中有BUG 不能为 空
我们开发的环境是MYSQL5.5
那么我们的修复方法有2种:
第一种,你用的虚拟主机,无法修复Mysql的BUG怎么办?
只能放弃填写QQ 或 强制填写QQ
1. 放弃填写QQ 打开/client/user/ourphp_play.class.php 把110行删掉
2. 强制填写QQ 打开/templats/user/cn_reg.html 把 <input type="text" name="OP_Userqq" class="input" /> 改成
<input type="text" name="OP_Userqq" class="input" datatype="*" />
但是这种治标不治本
如何修复MYSQL 这个BUG呢?
mysql int类型数据插入空值时报错,调整sql-mode
insert into log values('','admin','31','physics')
这样写就会报错:
Incorrect integer value: '' for column 'id' at row 1
这种应该是版本问题,尤其是虚拟主机。
把''改成null不会出错:
这种问题一般mysql 5.x上出现。我用的mysql5.1,后面查询得知新版本mysql对空值插入有"bug",要在安装mysql的时候去除默认勾选的enable strict SQL mode。如果已经安装好了的,就在my.ini中查找sql-mode,
默认为 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可。 |
|