我有两张类似的table。一个具有自动增量值,另一个没有。第一个表的第一列定义为 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。
2条答案
按热度按时间ar5n3qh51#
大概是你的
testtable1
定义相当类似于(伪符号):所以当你这么做的时候:
您显式地告诉数据库在
INT
列。这是行不通的。一
AUTOINCREMENT
列不需要被告知有空值,它将自动递增。只需指定要插入的值:让数据库引擎处理
ID
列。一般来说,显式地指定插入值或从中选择值的列总是很有价值的。它使代码更易于阅读/支持,并减少了表定义稍有变化时出现错误/错误的可能性。aij0ehis2#
如果我读对了,第一个表有一个int(11)和
AUTO_INCREMENT
.这意味着您应该使用与表2中类似的查询。因为只有两个非自动增量字段的传入值。
只要有3个字段,第一个是auto inc int,另外两个是字符串,这就可以工作。这是因为auto inc自动处理第一列。
另外,为了安全起见,请查看此链接或搜索php-mysql predated语句以使用prepared语句。它将帮助您抵御sql注入。