我有2个类似的表格。一个带有自动增量值,另一个没有。第一表的第一列定义为INT(11), PRIMARY UNIQUE INDEX,在phpmyadmin的EXTRA下它表示AUTO_INCREMENT

该代码不起作用,并且不添加任何值。

mysqli_query($con, "INSERT INTO testtable1 VALUES ('', 'zzz', 'yyy')") ;


第二个表与删除第一列的表相同。此代码有效。

mysqli_query($con, "INSERT INTO testtable2 VALUES ('jjj', 'fff')") ;


知道我缺少什么吗?在数据库上运行7.2。

最佳答案

大概您的testtable1具有与(pseudo-notation)类似的定义:

testtable1
------------
ID             INT      PK AUTOINCREMENT
SomeColumn     NVARCHAR
AnotherColumn  NVARCHAR


因此,当您执行此操作时:

INSERT INTO testtable1 VALUES ('', 'zzz', 'yyy')


您要明确告诉数据库在INT列中插入一个空字符串。哪个行不通。

无需告知AUTOINCREMENT列为空值,它会自动递增。只需指定要插入的值即可:

INSERT INTO testtable1 (SomeColumn, AnotherColumn) VALUES ('zzz', 'yyy')


让数据库引擎处理ID列。通常,几乎总是值得明确指定要在其中插入值或从中选择值的列。如果表定义稍有更改,它使代码更易于阅读/支持,并减少了错误/错误的机会。

09-13 00:44