我开始编写一个新的php脚本,我第一次在mysql中使用DATATIME选项。我认为这就是问题所在。
我的sql表是:id int(6) auto_increment,
name varchar(40) not null,
pseudo varchar(40) not null,
email varchar(40) not null,
password varchar(40) not null,
plan varchar(40) not null,
date DATETIME DEFAULT CURRENT_TIMESTAMP,
points int(6) not null,
primary key(id,name,pseudo,email,password,date,points,plan)
当我尝试执行这个查询时:
insert into users(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
这个错误显示:
ERROR 1064(42000):你的SQL语法有错误;检查对应于MySQL服务器版本的手册在'NULL '附近使用的语法"名称"、"伪"、"email.com"、"Pass1919",空,"100")的第1行
try this.
insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",NULL, "100");
正如其他人所说,
insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",'', NULL, "100");
plan varchar(40) not null
他们错过的计划不是空的,要么为日期输入空,要么我宁愿完全省略它。
insert into users(name,pseudo,email,password,paln,poits)
values("name","pseudo","email@email.com","Pass1919",'', "100");
如果计算上面一些响应中的字段和输入,它们是不相等的。字段列表在插入中是可选的,但我会使用它们,为了可读性,并确保您有正确的输入顺序和数量。
最后一件事是改变主键,只到auto increment字段,如果你需要其他复合索引,你应该单独添加它们,并根据你的需求做唯一的。主键应该是代理键,如下所定义
- 该值在系统范围内是唯一的,因此永远不会被重用
- 该值是系统生成的
- 用户或应用程序无法操作
- 该值不包含任何语义
- 该值对用户或应用程序不可见
- 该值不是由来自不同域的多个值组成的。
其他键应该与数据相关,就像我说的,如果你需要一个复合唯一键,或者只是一个唯一的文件,如电子邮件,使其与主键分开。
必须使用关键字values:
insert into users values(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");
不要传递第一个参数为NULL
,因为您已经将其指定为主键和自动递增。使用这个
insert into users values("name","pseudo","email@email.com","Pass1919",NULL, "100");
试试这个
INSERT INTO users(
`name`,
`pseudo`,
`email`,
`password`,
`plan`,
`points`
)
VALUES (
NULL,
'name',
'pseudo',
'email@email.com',
'Pass1919',
NULL,
'100');
尝试添加您想要使用values
关键字插入值的表字段名。如果你不想发送id, date
,自动递增id不能是NULL
值留下,它将收集值auto with increment和当前时间戳
insert into users(name,pseudo,email,password,plan,points) values ('name','pseudo','email@email.com','Pass1919','','100');
此外,当你处理整数时,你不需要在插入时将其括在引号中,所以你可以
insert into users(name,pseudo,email,password,plan,date,points)
values("name","pseudo","joe.bloggs@mydomain.com","S3CuR3", "PLAN", "2014-06-26", 100);