无法从列中选择最大值


Unable to select highest value from a column

我已经为此受苦了很长时间。这让我发疯了...

我只想取一列的最大值,将 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() )";

改用这个:

SELECT COALESCE(MAX(id)+1,0) FROM `$object_table`
SELECT * FROM `$object_table`

表名和字段名不在 '' 中,而是在 '' 中(反引号)

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

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

您应该

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

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

$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时,这将起作用。

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

其次,mysql_*被弃用,请不要使用它。请改用 PDOmysqli

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

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

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

SELECT MAX(id) FROM table

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