【发布时间】:2018-05-09 20:49:11
【问题描述】:
我对 PHP 很陌生。 目前我正在尝试通过 PHP 向 mysql-database 中的表插入新行。
到目前为止,只有 7 个条目,ID 为 1-7。 不过,无论我为 ID 列使用什么(更高的)数字,我总是从浏览器返回“Duplicate entry '19' for key 'PRIMARY'”:
Error: INSERT INTO tbl_Fotografen (FotografenID, FotografAnrede, FotografVorname, FotografNachname, Fotostudio, FotografStraße, FotografPLZOrt, FotografBundesland, FotografBereich, FotografFestnetz, FotografMobil, FotografEMail, FotografWebsite, Honorar, KmPauschale, FotografIBAN, Besonderheiten, aktiv) VALUES (19, ' Herr', 'Konrad', 'König', 'keins', '', '', 'Bayern', '', '', '', '', '', '', '', '', ' ', '1');
键“PRIMARY”的重复条目“19”
本例中的 PRIMARY KEY 是第一列 (FotografenID)。
当我复制语句并(在删除刚刚创建的行之后)直接在 phpmyadmin 中输入完全相同的内容时,我没有收到此错误消息。
有什么问题吗? (主键是 INT UNSIGNED,NOT NULL,AUTO-INCREMENT) 我也不明白的是,尽管它“认为”已经有一个带有这个主键的条目,但为什么它仍然输入。
感谢您的帮助!
【问题讨论】:
-
会不会因为某种原因,查询被执行了两次?
-
如果是自增,为什么要显式指定而不是让它自动填充?
-
亲爱的 rickdenhaan,我也想过这个问题。为了测试我在代码中放置了一个 if 语句,以防成功插入数据,然后在错误之前显示在浏览器中。但是,尽管数据在数据库中,但没有显示成功消息。
-
亲爱的 Barmar,它不接受空列。然后它说您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 ''Herr'、'Konrad'、'König'、'keins'、''、''、'Bayern'、''、'' 附近使用的正确语法'', '', '', '', ' 在第 1 行。此外,我有时需要能够插入旧数据,例如ID 丢失但仍然需要保留旧 ID,并且在 mysql 本身中,只要 ID 是“免费的”,我就从来没有遇到过问题。
-
如果您将
NULL代替19作为FotografenID值会发生什么?
标签: php mysqli insert duplicates primary-key