1

我正在使用简单的 MySQL 代码从具有 auto_increment 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我想要与可以轻松获取此类代码 的相同设置。

4

5 回答 5

7

您将 '' 插入到自动增量 ID 中。只需插入其他字段,MySQL 就会处理自动增量列。

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

应该

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
于 2013-07-30T06:33:27.987 回答
1

如果您仍然收到错误消息

首先检查,在服务器中,您的 id 列必须标记为 auto_increment.data 类型应该是 int。如果可以的话

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

并尝试使用准备好的语句来避免 sql 注入。谢谢。
希望这对你有用。

于 2013-07-30T08:38:53.523 回答
1

如果您想要表中所有行的最后一行,那么这终于MAX(id)是正确答案的时候了!:) 有点儿。

SELECT fields FROM mytable BY id DESC LIMIT 1;

将获取最后一个 id 然后将其增加到 1 // 在插入语句中将此值添加到 id

或者如果您有一个自动增量列,请将其更改为

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

$sql="INSERT INTO mytable(myvar) VALUES ('$myvar')";
于 2013-07-30T06:35:31.650 回答
0

自动增量插入 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')";
于 2013-07-30T06:35:16.610 回答
0

首先通过应用查询检查您的表结构属性:

desc mytable (or) show create table mytable.

检查为列 id 设置了自动增量属性。

如果是意味着不需要在插入查询中传递 id。

只需将查询编写为:-

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

于 2013-07-30T06:39:32.457 回答