Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法从列中选择最高值_Php_Mysql - Fatal编程技术网

Php 无法从列中选择最高值

Php 无法从列中选择最高值,php,mysql,Php,Mysql,我已经忍受了这么长时间。它让我发疯 我只想取一列的最大值,将1添加到id,然后插入一个新条目 该表有一列“id”,可以说是“name”和“age” 问题是$new_id变量没有从id列中选择最高值。我知道我做错了什么。。。但是什么?? 请帮忙,我知道这一定是一个非常基本的问题,但我已经看了几个小时了 $relations_table="xxx_sobipro_relations"; $sql="SELECT * FROM '$relations_table' ORDER BY id DESC

我已经忍受了这么长时间。它让我发疯

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

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

您应该查看自动增量-为id列启用该选项将使它在每次插入行时自动增加1。这样,在插入时就不必指定id,因为MySQL会为您跟踪它。

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

第二,mysql_*已弃用,请勿使用。而是使用PDO或mysqli

第三,可以使用MAX从列中获取最大值。从“$object\u table”限制1中选择MAXid


最重要的是,将id字段设置为autoincrement,不要设置为MySQL。您可以在插入时执行此操作:

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

自动增量是一个更好的选择,但当您无法自动增量时,这将起作用。

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

SELECT MAX(id) FROM table
但是许多数据库都提供了自动递增功能,在这种情况下,您可以指定一列id作为主键,并使其值自动递增,因此您不必执行任何操作

SELECT * FROM `$object_table`
表名和字段名不在“backticks”中,但在“backticks”中

你应该向数据库询问错误


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

您使用的是什么数据库?它不支持某种自动递增功能吗?这是对sobipro组件的攻击。所以,不,我不能使用自动增量。Thanksmysql_fetch_assoc而不是_array和quote array key$row['id']。另外,对于新代码,不要再使用mysql扩展,它已被弃用。@Wrikken为什么不使用数组?它包括数字键和命名键。@Barmar:啊,你说得对,我使用mysql的时间太长了,我把mysql\u fetch\u行和mysql\u fetch\u数组搞混了,抱歉。只是补充一点:联合是用来处理表中没有任何行或者已经被清除的情况的。将其与拉斯回答中的删除引号结合起来,我们就有了赢家@Wrikken确实,修正了。OP:反勾号在这里是合适的,而不是单引号。感谢大家对COALESCE函数的介绍,但我仍然有同样的问题。我获取的结果正确吗?是否存在sytax问题。我想我必须安装一个IDE来调试。因为它有我…请确保在获取itI时也使用$row['id'],我理解,但该表是组件sobipro的一部分。该列是两列主键的一部分。所以我认为添加自动增量是行不通的。谢谢