无法从列中选择最高值

时间:2013-09-23 17:45:17

标签: php mysql

我长期遭受这种痛苦。它让我变得坚果......

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

表中有一个列'id',可以说'name'和'age'

问题是$ 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() )";

6 个答案:

答案 0 :(得分:4)

请改用:

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

答案 1 :(得分:2)

SELECT * FROM `$object_table`

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分: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时这将有效。

答案 4 :(得分:0)

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

其次,mysql_*已弃用,请勿使用它。而是使用PDOmysqli

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

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

答案 5 :(得分:0)

因此,您正在寻找的查询是:

SELECT MAX(id) FROM table

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