php获取最大值(accNumber),然后递增1


php get the max(accNumber) and then increment by 1

我试图得到最高的数字,然后将其递增1。我收到空白页,这是我的代码

   $query = $pdo->prepare("SELECT max(accnum) FROM accounts");
        $query->execute();
       while($num = $query->fetchAll()){
        if($num[1] == null){
        $accnumber = "100001";
        }else{
        $accnumber = $num[1]++; 
    }
        echo $accnumber;
    }   

我在这里做错了什么。感谢

  $query = $pdo->prepare("SELECT max(accnum) FROM accounts");
        $query->execute();
       while($num = $query->fetchAll()){
        if($num[0] == null){
        $accnumber = "100001";
        }else{
        $accnumber = $num[0]++; 
    }
        echo $accnumber;
    }  

也许你需要这样的东西?

$query = $pdo->prepare("SELECT max(accnum)+1 as maximum FROM accounts");
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if($result['maximum'] == null) { 
    $result = "100001" 
} else { 
    $result = $accnumber['maximum'] 
}

您使用的是postincrement;也就是说,++在变量之后,所以直到赋值完成之后才会更新。

只需使用这个即可:

$accnumber = $num[1] + 1;

这样一来,$num不会受到影响,您的值将是正确的。

既然你得到的是一个空白页面,这可能不是问题所在。因此,你可能还想重新考虑如何处理这些价值观;你似乎在混合字符串和整数,这可能不会有好的结果。我建议只使用整数。此外,您应该使用$num[0],因为您要获取基于零的数组的第一个值:

$query = $pdo->prepare("SELECT max(accnum) FROM accounts");
$query->execute();
while($num = $query->fetchAll()){
    if($num[0] == null){
        $accnumber = 100001;
    }else{
        $accnumber = intval($num[0]) + 1;
    }
    echo $accnumber;
}