我使用简单的MySQL代码从带有auto_increment id的表单插入数据,它在本地主机上运行正常但在服务器上运行不正常。
这是我正在使用的代码
$myvar=$_POST['var'];
//Insert data into mysql table
$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')";
在本地主机phpmyadmin数据插入表中但在服务器上phpmyadmin数据未插入表中。在我的localhost中,我使用XAMPP
而在IIS服务器上使用phpmyadmin。
我应该在服务器上的phpmyadmin中做什么设置,以便自动插入自动增加的id,我知道我可以使用mysql_insert_id()
来插入id但是在很多文件中我使用了这种类型的代码,我无法更改。我想要与XAMPP
相同的设置,可以轻松获取此类代码。
答案 0 :(得分:6)
您将''插入自动增量ID。只需插入其他字段,MySQL就会处理自动增量列。
$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')";
应该是
$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
答案 1 :(得分:0)
如果您想要表格中所有行的最后一行,那么这最终是MAX(id)
是正确答案的时间! :)有点。
SELECT fields FROM mytable BY id DESC LIMIT 1;
将获取最后一个id,然后将其增加到1 //将此值添加到insert语句中的id
或 如果您有自动增量列,请将其更改为
$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')";
到
$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
答案 2 :(得分:0)
首先通过应用查询来检查表格结构:
desc mytable(或)show create table mytable。
为列ID设置了检查自动增量属性。
如果是,则表示不需要在插入查询中传递id。
只需编写一个查询: -
$ sql =“INSERT INTO mytable(myvar)VALUES('$ myvar')”;
答案 3 :(得分:0)
如果你仍然收到错误
首先检查,在服务器中你的id列必须标记为auto_increment.data类型应该是int。 如果没问题那么
insert into mytable(myvar) values('test');
并尝试使用预准备语句来避免sql注入。谢谢。
希望这对你有用。
答案 4 :(得分:0)
将ID值留空,
像这样:
$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
答案 5 :(得分:-1)
自动增量会插入id本身,因此您无需通过代码
传递它$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
或者你可以这样做
$sql="INSERT INTO mytable(id,myvar) VALUES (NULL,'$myvar')";
如果您想要出于某种原因手动插入ID
$sql="INSERT INTO mytable(id,myvar) VALUES (10,'$myvar')";