从MySQL表中的列中获取最大值,将值增加1并传递给变量

从MySQL表中的列中获取最大值,将值增加1并传递给变量,mysql,pdo,prepared-statement,max,Mysql,Pdo,Prepared Statement,Max,我使用下面的查询来提取MySQL表中名为id的列的最大值,这样我可以将其值增加1,并将其传递给名为$fav_id的变量。出于某种原因,$fav_id返回的是“0”,而不是我想要的值,即如果id列中的最大当前值是465,那么$fav_id应该设置为466。也许有人能告诉我哪里出了问题 $sth2 = $pdo->prepare("SELECT MAX(id) AS id FROM tracks"); $sth2->setFetchMode(PDO::FETCH_OBJ); whil

我使用下面的查询来提取MySQL表中名为id的列的最大值,这样我可以将其值增加1,并将其传递给名为$fav_id的变量。出于某种原因,$fav_id返回的是“0”,而不是我想要的值,即如果id列中的最大当前值是465,那么$fav_id应该设置为466。也许有人能告诉我哪里出了问题

$sth2 = $pdo->prepare("SELECT MAX(id) AS id FROM tracks");

$sth2->setFetchMode(PDO::FETCH_OBJ);

while($row = $sth2->fetch()) {
    $fav_id = $row->id+1;
}

尝试将$row->id+1括在括号中,比如($row->id)+1,并注意范围。您可能希望在while循环之外将$fav_id设置为0,以确定它的作用域大于while循环。

根据我对PDO的了解,它应该是$row[id]而不是$row->id。此外,您从未执行过准备好的语句,但是,由于查询中没有任何占位符,您应该使用'->query'而不是'->prepare'

您是否尝试将$fav_id设置为like-1,然后查看它是否仍然为-1?如果是这样的话,就说明while循环根本没有被输入。但是我想知道。。。$sth2->fetch是否真的返回了任何东西?如果不是,那可能会给你一个假阴性。