0

我已经为此受苦很久了。它让我发疯...

我只想取一列的最大值,将 1 添加到 id 然后插入一个新条目。

该表有一列“id”,可以说“姓名”和“年龄”

问题是 $new_id 变量没有从 id 列中选择最大值。我知道我做错了什么......但是什么?
请帮忙,我知道这一定是一个非常基本的问题,但我已经看了好几个小时了......

$relations_table="xxx_sobipro_relations";

$sql="SELECT * FROM '$relations_table' ORDER BY id DESC LIMIT 1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

$new_id = $row[id] + 1;

//more code

$query="INSERT INTO $relations_table (id, pid, oType, position, validSince)
VALUES ($new_id, 2, 'testtest' , $position , NOW() )";
4

6 回答 6

4

改用这个:

SELECT COALESCE(MAX(id)+1,0) FROM `$object_table`
于 2013-09-23T17:47:42.320 回答
2
SELECT * FROM `$object_table`

表名和字段名不在 '' 但 ``(反引号)

你应该向数据库询问错误......

你不应该再使用 mysql 扩展,而是切换到 mysqli 或 PDO ......

于 2013-09-23T17:49:16.647 回答
1

您可以在插入时执行此操作:

$query="INSERT INTO $relations_table (id, pid, oType, position, validSince) 
    VALUES ((SELECT MAX(id)+1 FROM $object_table), 2, 'testtest' , $position , NOW() )";

Auto_increment 是一个更好的选择,但是当你不能 auto_increment 时这将起作用。

于 2013-09-23T17:48:51.447 回答
1

您应该查看 AUTO_INCREMENT - 为您的 id 列打开它会导致它在您每次插入一行时自动增加一。这样,您在插入时不必指定 id,因为 MySQL 会为您跟踪它。

于 2013-09-23T17:47:51.377 回答
0

因此,您要查找的查询是:

SELECT MAX(id) FROM table

但是许多数据库提供了“自动递增”功能,您可以在其中指定一个列(在本例中id)作为主键并使其值自动递增,因此您不必执行任何操作。

于 2013-09-23T17:48:55.540 回答
0

首先,它$row['id']不是$row[id]

其次,mysql_*已弃用,请勿使用。而是使用PDOor mysqli

第三,您可以使用MAX从列中获取最大值。SELECT MAX(id) FROM '$object_table' LIMIT 1.

最重要的是,将id字段设置为autoincrement并且不设置它(MySQL 会这样做)。

于 2013-09-23T17:48:27.183 回答