2013-07-30 87 views
1

我使用简单的MySQL代码从auto_increment id的表单插入数据,它在本地主机上正常工作,但在服务器上无法正常工作。自动增量ID未插入

这是我使用

$myvar=$_POST['var']; 
//Insert data into mysql table 
$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 

代码在本地主机的phpmyadmin数据插入表中,但在服务器上的phpmyadmin数据表中没有插入。在我的本地主机上,我使用的是XAMPP,而在IIS服务器上使用phpmyadmin。 我应该在服务器上的phpmyadmin做什么设置,以便id自动插入自动增量,我知道我可以使用mysql_insert_id()来插入id,但在很多文件中我使用了这种类型的代码,我不能改变。我需要与XAMPP相同的设置,可以轻松使用此类代码。

+0

确保您的数据库列在IIS服务器中具有自动递增属性 –

+0

为什么不使用phpmyadmin使其成为auto_increment? –

+0

请注意,使用$ myvar的方式可能会导致SQL注入攻击。我希望你正在以某种方式照顾.. – Shreeni

回答

-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')"; 
6

你在插入''到自动增量ID。只需插入其他字段并且MySQL处理自动增量列。

$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 

应该

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')"; 
+1

如果值不能被忽略,它不应该是一个空字符串,而是NULL。 – Sven

0

如果你想在最后的所有在表中的行,那么这是最后其中MAX(id)是正确的答案的时候了! :) 有点。

SELECT fields FROM mytable BY id DESC LIMIT 1; 

将获得最后的ID则递增到1,如果你有一个自动增量列其更改为

$sql="INSERT INTO mytable(id,myvar) VALUES ('','$myvar')"; 
//这个值在插入语句添加到ID

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')"; 
+0

实际上'MAX(id)'方法会导致错误,因为在确定了这个值之后,不同的进程可能会添加一个新的数据集。在具有并发访问权限的系统中这是不安全的。 – Sven

0

第一通过应用查询检查您的表结构属性:

desc mytable(或)show create table mytable。

检查自动增量属性是否设置为列ID。

如果是,则表示不需要在插入查询中传递id。

只需编写一个查询为: -

$ SQL = “INSERT INTO MYTABLE(MYVAR)VALUES( '$ MYVAR')”;

0

如果还是你所得到的错误

第一张支票,在你的id列必须标记为auto_increment.data类型应该是int服务器。 如果是OK,然后

insert into mytable(myvar) values('test'); 

,并尝试使用准备好的语句,以避免SQL注入。谢谢。
希望这可能会对你有用。