空表中的键'PRIMARY'重复输入'0'

时间:2015-02-19 01:17:20

标签: php mysql database duplicates

我目前正在开始进行Web开发,现在正在开发一个非常简单的脚本,用于将条目数据从一个发布到一个mysql数据库。但我遇到的问题是,当我提交表单时,我收到以下错误:

Error: Duplicate entry '0' for key 'PRIMARY'

对我而言,这似乎是一个非常奇怪的错误,因为该表是完全空的,ID设置为auto_increment,我不是要为它分配任何值。

我在Mac OS btw上使用Xampp作为我的本地主机。

这是我的表格(.php):

这是我的mysql条目脚本(.php):

结果如下:

这是数据库设置:

奇怪的是,当表为空时,我第一次通过表单插入时,某些内容最终会出现在数据库中。但它缺少“电子邮件”和“密码”并显示“NULL”。我第二次使用表单时,数据库中没有添加任何内容:

1 个答案:

答案 0 :(得分:1)

  1. 您的id似乎是自动递增的。它没有为每一行生成新的id。如果您没有为其提供值,则默认为0
  2. 尽管如此,该列仍存在UNIQUE / PRIMARY约束,因此ID 0不能多次出现。由于您没有提供id而MySQL没有生成id(因为该列不是自动递增的),所以不能插入多行。
  3. 您发出了三个单独的INSERT INTO语句,这些语句将导致插入三个单独的行(如果您可以插入多行,请参见上文),每个都有不同的行价值集;但是从来没有一行设置了所有值。
  4. 所以:

    1. 让您的id列实际自动递增。
    2. 准备一个INSERT INTO语句,一次性插入所有值:

      INSERT INTO members (name, email, password) VALUES (.., .., ..)
      
    3. 请参阅Why shouldn't I use mysql_* functions in PHP?并停止使用mysql_*。了解准备好的陈述,请阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text)了解原因。

相关问题