2

我想获取行数据的最大 id。在我的表中,第一列是 id 然后是 firstname 等等。这是我用来获取行数据的 max(id) 的 sql 命令。

<?PHP  $maxid=$this->db->query("SELECT MAX(id) FROM `emplyee_personal_details`");
                print_r( $maxid) ;?>

但它打印一堆数据,因为它是一个数组。但在数据插入和更新之前,我只需要行数据的最大 id 进行验证。

如何获得最大值。我使用 codeigniter 框架。

4

6 回答 6

10

尝试这个:

$maxid = $this->db->query('SELECT MAX(id) AS `maxid` FROM `emplyee_personal_details`')->row()->maxid;

更新

即使您的表是空的,这也将起作用(与我上面的示例不同):

$maxid = 0;
$row = $this->db->query('SELECT MAX(id) AS `maxid` FROM `emplyee_personal_details`')->row();
if ($row) {
    $maxid = $row->maxid; 
}
于 2012-12-22T16:06:05.770 回答
5

使用像“SELECT MAX(id) ...”这样的原始查询的问题在于它不是抽象的,并且可能不适用于每个 SQL 引擎。我认为主动记录的方式是这样的:

$this->db->select_max('id');
$query = $this->db->get('emplyee_personal_details');
// Produces: SELECT MAX(id) as age FROM emplyee_personal_details

请参阅:http ://ellislab.com/codeigniter/user-guide/database/active_record.html

于 2012-12-22T16:18:20.333 回答
1
SELECT id FROM table ORDER BY id DESC LIMIT 1

这将为您提供最高的 id 值,当我阅读此内容时,“它会打印一堆数据,因为它是一个数组”,我觉得您真正想要的是该数组的一部分。DB 查询总是返回复杂的结构,如数组或对象。因此,如果您只想要标量值(作为整数的数字),您可以使用如下内容:

$maxid = (int)$maxid['id'];

或者像这样(如果你有一个对象):

$maxid = (int)$maxid->id;

HTH,~雷

于 2012-12-22T16:06:30.447 回答
1

试试这个,希望对你有帮助

return $this->db->select_max('id')
                        ->get('your_table_name')
                        ->row()->id;
于 2018-02-02T05:08:35.823 回答
0
public function getMaxCategoryId() {
    $query = $this->db->query("SELECT category_id+1 AS maxid FROM " . DB_PREFIX . "category ORDER BY category_id DESC LIMIT 1");
    return $query->row['maxid'];
}

错误未定义索引最大值

于 2017-11-06T09:50:02.940 回答
0
<?php`$qry = "select max(ID)+1 As ID from records";`
$result = $con->query($qry);
$row = $result->fetch_assoc();`echo "New ID To Enter = ".$row["ID"];?>

连接后只需编写此代码即可

于 2017-11-12T15:39:41.237 回答