无法将主键(AKA自动增量)更改为用户ID而不是用户名

时间:2013-03-26 06:51:18

标签: php login registration

我最近从JPMaster77获得了注册/登录脚本。总而言之,它工作得很好,我让脚本工作,但当我在表中添加一个新列作为“ID”并将其更改为主键时,脚本变得奇怪。

这是我使用的SQL

CREATE TABLE users (
 id int(11) primary key,
 username varchar(30),
 password varchar(32),
 userid varchar(32),
 userlevel tinyint(1) unsigned not null,
 email varchar(50),
 timestamp int(11) unsigned not null
);

正如您所看到的,它确实很有效,直到您看到注册码。错误“我们很抱歉,但是发生了错误,您的用户名测试注册无法完成。 请稍后再试。“每次有人试图注册时都会弹出,我相信是因为这个原因。我一直试图解决这个问题,但我不熟悉主键和自动增量。脚本是有点长,所以我觉得要把它贴在Pastebin上,而不是在这里写下来。http://pastebin.com/DYRCp3Sc

3 个答案:

答案 0 :(得分:1)

我在sql脚本中根本看不到auto_increment列。如果你需要它,那么你的表创建查询应该是那样的

CREATE TABLE users (
 id int(11) primary key auto_increment  ,
 username varchar(30),
 password varchar(32),
 userid varchar(32),
 userlevel tinyint(1) unsigned not null,
 email varchar(50),
 timestamp int(11) unsigned not null
);

不使用auto_increment您需要插入由/ application生成的唯一主键。 MySQL不会插入任何值。此外,mysql可能会在插入时出错。

答案 1 :(得分:0)

我看不到实际调用注册函数的代码。但似乎表格很好。您是否尝试通过控制台将数据插入此表?试图输入您在表单中输入的相同数据,看看会是什么。

答案 2 :(得分:0)

当您要插入新记录并且您具有id主键和auto_increment时 试试这个:

insert into users (username,password,userid,userlevel,email,timestamp) values
('username','password','userid','userlevel','email','timestamp');

您省略了字段ID,因为它是自动递增的,请在插入的位置进行此修改 进入脚本中的表