首页 > 技术文章 > MySQL 普通注册插入优化。

phpjinggege 2017-03-08 11:12 原文

普通做法是:

用户通过手机号注册。默认是根据这个手机号去用户表里查询,看有没有这个手机号,有那么就提示已注册。否则就执行注册插入数据库操作。这里其实正常注册流程是两次数据库操作的(查询,插入);

优化做法:

手机号设置为唯一索引。直接执行插入操作。这里利用了MySQL的报错机制;如果插入的手机号 跟数据库里的有重复,那么调用MySQL方法mysql_errno() 可以看到是是1062;1062 代表插入的手机号数据库里已经存在。插入失败。这样就可以知道。数据库里是否已经有这个用户了。只操作了一次插入操作;

 附 mysql_errno部分常用 错误代码解释

1005: 创建表失败
1006: 创建数据库失败
1007: 数据库已存在,创建数据库失败
1008: 数据库不存在,删除数据库失败
1009: 不能删除数据库文件导致删除数据库失败
1010: 不能删除数据目录导致删除数据库失败
1011: 删除数据库文件失败
1012: 不能读取系统表中的记录
1016: 无法打开文件
1020:记录已被其他用户修改
1021:硬盘剩余空间不足,请加大硬盘可用空间
1022:关键字重复,更改记录失败
1023:关闭时发生错误
1024:读文件错误
1025:更改名字时发生错误
1026:写文件错误
1032:记录不存在
1036:数据表是只读的,不能对它进行修改
1037:系统内存不足,请重启数据库或重启服务器
1038:用于排序的内存不足,请增大排序缓冲区
1040:已到达数据库的最大连接数,请加大数据库可用连接数
1041:系统内存不足
1042:无效的主机名
1043:无效连接
1044:当前用户没有访问数据库的权限
1045:不能连接数据库,用户名或密码错误
1040: 最大连接数
1048:字段不能为空
1049:数据库不存在
1050:数据表已存在
1051:数据表不存在
1054:字段不存在
1065:无效的SQL语句,SQL语句为空
1081:不能建立Socket连接
1114:数据表已满,不能容纳任何记录
1116:打开的数据表太多
1129:数据库出现异常,请重启数据库
1130:连接数据库失败,没有连接数据库的权限
1133:数据库用户不存在
1141:当前用户无权访问数据库
1142:当前用户无权访问数据表
1143:当前用户无权访问数据表中的字段
1146:数据表不存在
1147:未定义用户对数据表的访问权限
1149:SQL语句语法错误
1158:网络错误,出现读错误,请检查网络连接状况
1159:网络错误,读超时,请检查网络连接状况
1160:网络错误,出现写错误,请检查网络连接状况
1161:网络错误,写超时,请检查网络连接状况
1062:字段值重复,入库失败

推荐阅读