【问题标题】:MySQL INSERT INTO putting every field at null or 0?MySQL INSERT INTO 将每个字段都设置为 null 或 0?
【发布时间】:2022-12-30 02:13:23
【问题描述】:

仍在学习 sql,但我不明白我放入表中的所有数据是如何设置为 0 或 NULL 的?

【问题讨论】:

  • INSERT INTO users (wantedColumn, anotherColumn) VALUES (someValue, anotherValue)。您的 id 列也不需要指定,它是自动递增的。在编写此查询时,它基本上是插入一个“空白”行或默认行。

标签: mysql sql


【解决方案1】:

您需要将列和 VALUES 拆分成单独的语句(也应该自动添加 id,因为您将它作为身份,所以您不需要显式使用它)。

试试这个:

INSERT INTO users (email, name, forename, pwhash) 
VALUES ('mail', 'name', 'blaa', 'befbf');

如果需要,您可以使用它一次插入多个值

INSERT INTO users (email, name, forename, pwhash) VALUES 
('mail', 'name', 'blaa', 'befbf'),
('mail2', 'another name', 'blaa2', 'befbf123'),
('mail3', '1 more name', 'blaa3', 'befbf456'),
('mail4', 'one final name', 'blaa4', 'befbf789');

(ETC。)

【讨论】:

    【解决方案2】:

    正确的命令:

    insert into users (email, name, forename, pwhash) values ('mail', name, 'blaa', 'befbf')
    

    由于 sql 格式错误,您得到 null。 ID 为 1,因为它会根据您的定义自动递增。但其他列为空或 0。

    【讨论】:

      【解决方案3】:

      尝试

      INSERT INTO users (email, name, forename, pwdssh)
          VALUES ('email', 'name', 'blaa', 'befbf');
      

      id 应该作为主键自动递增,因此无需指定它。如果你想像你尝试的那样内联,我不认为连字符是正确的语法,它将是一个等号,如email='email'

      像这样明确列出列名意味着您可以按任何顺序指定列名后跟 VALUES。您也可以忽略列名而只说:

      INSERT INTO users 
      VALUES ('email', 'name', 'blaa', 'befbf');
      

      其中值按列定义的顺序列出。这样做,顺序变得很重要。

      你可能会找到this quite useful

      【讨论】:

        【解决方案4】:

        您无需指定“field={value}”,只需按正确顺序输入值即可。 插入表(Field1,...,FieldN) 值('Value1',....,'ValueN');

        https://www.w3schools.com/mysql/mysql_insert.asp

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-09
          • 1970-01-01
          相关资源
          最近更新 更多