我目前正在开始进行Web开发,现在正在开发一个非常简单的脚本,用于将条目数据从一个发布到一个mysql数据库。但我遇到的问题是,当我提交表单时,我收到以下错误:
Error: Duplicate entry '0' for key 'PRIMARY'
对我而言,这似乎是一个非常奇怪的错误,因为该表是完全空的,ID设置为auto_increment,我不是要为它分配任何值。
我在Mac OS btw上使用Xampp作为我的本地主机。
这是我的表格(.php):
这是我的mysql条目脚本(.php):
结果如下:
这是数据库设置:
奇怪的是,当表为空时,我第一次通过表单插入时,某些内容最终会出现在数据库中。但它缺少“电子邮件”和“密码”并显示“NULL”。我第二次使用表单时,数据库中没有添加任何内容:
答案 0 :(得分:1)
id
列不似乎是自动递增的。它没有为每一行生成新的id。如果您没有为其提供值,则默认为0
。UNIQUE
/ PRIMARY
约束,因此ID 0
不能多次出现。由于您没有提供id而MySQL没有生成id(因为该列不是自动递增的),所以不能插入多行。INSERT INTO
语句,这些语句将导致插入三个单独的行(如果您可以插入多行,请参见上文),每个都有不同的行价值集;但是从来没有一行设置了所有值。所以:
id
列实际自动递增。准备一个INSERT INTO
语句,一次性插入所有值:
INSERT INTO members (name, email, password) VALUES (.., .., ..)
请参阅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)了解原因。