$sql = "select max(classId) as classId from shopAndClass where shopId = '".$shopId."'";
$result = mysql_query($sql);
$obj = mysql_fetch_object($result);
$maxClassId = $obj->classId;
echo $maxClassId;
$classId = $maxClassId + 1;
echo $classId; 结果:100001000001000001     1.00001000001E+17 那个maxClassId是字符类型的,当它加 1 后,出错,应该怎么办啊 在这里,我要的效果是,classId 的值最后为100001000001000002 各位高手,帮帮忙哦。最好把详细转换过程写下来,谢谢!!!!

解决方案 »

  1.   

    要实现不难
    $a = strlen($maxClassId)-1;
    $b = $maxClassId[$a]+1;
    $classId = substr($maxClassId, 0, -1).strval($b);
    问题是你理解原因么?
    因为16位的10进制整数已经远超出32位(除非你的系统是64位的)2进制整数了,php默认按浮点数处理
      

  2.   

    $classId = $maxClassId + 1;
    改成$classId = bcadd($maxClassId , '1');
    echo $classId ;