【问题标题】:Error in SQL syntax DATATIME optionSQL 语法 DATATIME 选项中的错误
【发布时间】:2014-06-26 11:09:26
【问题描述】:

我开始编写一个新的 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 附近使用的语法, "name","pseudo","email@email.com","Pass1919",NULL,"100")' 在第 1 行

【问题讨论】:

标签: php mysql sql sql-server


【解决方案1】:

试试这个..

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

【讨论】:

    【解决方案2】:

    正如其他人所说,并且

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

    计划 varchar(40) 不为空,

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

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

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

    最后一件事是更改主键,仅更改自动增量字段,如果您需要其他复合索引,您应该单独添加它们并根据您的要求使其唯一。主键应该是代理键,以这种方式定义

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

    其他键应该与数据相关,就像我说的,如果您需要复合唯一键,或者只是像电子邮件这样的唯一字段,请将其与主键分开。

    【讨论】:

    • 非常感谢..我很久没有使用mysql了..感谢提醒:))) (y)
    【解决方案3】:

    你必须使用关键字值:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        试试这个

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

        【讨论】:

        • @user3779014 如果有帮助,请不要忘记接受/投票
        【解决方案6】:

        尝试使用values 关键字添加要插入值的表字段名称。如果您不想发送 id, date,自动增量 ID 也不能是 NULL values 离开它都会自动收集带有增量和当前时间戳的值

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            猜你喜欢
            • 2014-06-25
            • 1970-01-01
            • 2014-07-17
            • 1970-01-01
            • 1970-01-01
            • 2015-06-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多