我有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
列。通常,几乎总是值得明确指定要在其中插入值或从中选择值的列。如果表定义稍有更改,它使代码更易于阅读/支持,并减少了错误/错误的机会。