我长期遭受这种痛苦。它让我变得坚果......
我只想获取列的最大值,将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() )";
答案 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_*
已弃用,请勿使用它。而是使用PDO
或mysqli
。
第三,您可以使用MAX
从列中获取最大值。 SELECT MAX(id) FROM '$object_table' LIMIT 1
。
最重要的是,将id
字段设置为autoincrement
并且不设置它(MySQL会这样做)。
答案 5 :(得分:0)
因此,您正在寻找的查询是:
SELECT MAX(id) FROM table
但是许多数据库提供了“自动增量”功能,您可以在其中指定一个列(在本例中为id
)作为主键并使其值自动递增,因此您不必做任何这个。