SQL语法DATETIME选项出错

时间:2014-06-26 11:09:27

标签: php mysql sql sql-server

我开始使用新的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");

此错误显示:

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在'NULL附近使用的语法,   第1行的“name”,“pseudo”,“email@email.com”,“Pass1919”,NULL,“100”)

7 个答案:

答案 0 :(得分:1)

试试这个..

    insert into users(name,pseudo,email,password,paln,date,poits)
 values("name","pseudo","email@email.com","Pass1919",NULL, "100");

答案 1 :(得分:0)

尝试添加要使用values关键字插入值的表字段名称。如果您不想发送NULL,则自动增量ID也不能为id, date 值假设它将自动收集值增量和当前时间戳

 insert into users(name,pseudo,email,password,plan,points) values ('name','pseudo','email@email.com','Pass1919','','100');

答案 2 :(得分:0)

您必须使用关键字值:

insert into users values(NULL,"name","pseudo","email@email.com","Pass1919",NULL,
"100");

答案 3 :(得分:0)

不要将第一个参数作为NULL传递,因为您已将其指定为主键并自动增量。 使用这个

insert into users values("name","pseudo","email@email.com","Pass1919",NULL, "100");

答案 4 :(得分:0)

试试这个

INSERT INTO users(
  `name`,
  `pseudo`,
  `email`,
  `password`,
  `plan`,
  `points`
)
VALUES (
  NULL, 
 'name', 
 'pseudo', 
 'email@email.com', 
 'Pass1919', 
 NULL, 
 '100');

答案 5 :(得分:0)

此外,当您处理整数时,插入时不需要将其括在引号中,这样就可以了

      insert into users(name,pseudo,email,password,plan,date,points)
 values("name","pseudo","joe.bloggs@mydomain.com","S3CuR3", "PLAN", "2014-06-26", 100);

答案 6 :(得分:0)

正如其他人所说,

insert into users(name,pseudo,email,password,paln,date,poits)
values("name","pseudo","email@email.com","Pass1919",'', NULL, "100");

计划varchar(40)非空,

他们错过的是计划不为空,要么输入null作为日期,要么我宁愿完全省略它。

insert into users(name,pseudo,email,password,paln,poits)
values("name","pseudo","email@email.com","Pass1919",'', "100");

如果计算上述某些响应中的字段和输入,则它们不相等。字段列表在插入中是可选的,但我会使用它们,以提高可读性并确保输入的顺序和数量正确。

最后一件事改为主键,只改为自动增量字段,如果你需要其他复合索引,你应该将它们分开添加,并根据你的要求使其唯一。主键应该是代理键,如此定义

  • 该值在系统范围内是唯一的,因此永远不会重复使用
  • 该值是系统生成的
  • 该值不可由用户或应用程序操纵
  • 该值不包含语义含义
  • 该值对用户或应用程序不可见
  • 该值不是由来自不同域的多个值组成。

其他密钥应该与数据相关,就像我说的,如果你需要一个复合唯一密钥,或者只是像电子邮件这样的独特字段使它与主要密钥分开。

相关问题