我正在研究由PHP和MySQL创建的调查。所以问题是,我正在尝试创建一个ResponseID,这是每个提交调查的人的特定ID。因此,创建代码的目的是将ResponseID列中的现有最大值加1。这是代码:

//Response ID creation
$query = "SELECT max(ResponseID) FROM survey";
$res = mysql_query($query);
$RID = $res+1;


我知道我可以进行压缩,但这是问题所在:我已经在表上输入了一个ResponseID为1的项目。当我用不同的答案测试调查时,下一个ResponseID为5。应该是2。所以我进行了测试再次查看它是否下次会产生6。

不幸的是,它又产生了5个。我让我的PHP专家查看了一下,他说编码是正确的,应该来自数据库。除了为int之外,我没有在ResponseID中设置任何内容。那么为什么会产生5?如果有人可以告诉我如何解决它,那对您来说太酷了。

我对PHP有点陌生。

最佳答案

$ res将是一个mysql语句句柄,而不是查询结果。您仍然必须实际从$ res结果中获取一行,以访问查询中的max()函数的值。

该句柄可能在内部具有标识符#5,这就是为什么您得到“奇数”结果的原因。

代码应为:

$sql = "SELECT MAX(responseID) AS max ...";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);

$RID = $row['max'] + 1;

10-06 05:41