在短语编号中添加+1值

时间:2016-06-25 08:43:17

标签: php mysql

我想在数据库中的数据库sql中的短语中添加值,我就像这样保存phrasr

DO-2500-01
DO-2500-02

现在我的问题是如何在最后一个值中添加 +1 ,例如DO-2500-03 / DO-2500-04 这是我的代码

$getse = $DB_con->prepare("SELECT serial FROM `customer` WHERE user_add=:id ORDER BY serial DESC LIMIT 1");
$getse->execute(array(":id"=>$user_id));                  
$getse = $getse->fetch(PDO::FETCH_OBJ);
$addone = $getse->serial + 1;
echo $addone;

这是我的代码,我得到最后一个序列,我想添加+1,例如数据库中的最后一个序列是DO-2500-04我想获得此值并添加 +1 要变成这样DO-2500-05

4 个答案:

答案 0 :(得分:2)

拆分字符串,增加最后一部分并将其组合回来

$addone = explode('-', "DO-2500-04"); 
$addone[count($addone)-1] += 1;
// Append 0 if the last part less then 10
$addone[count($addone)-1] = str_pad($addone[count($addone)-1], 2, 0, STR_PAD_LEFT);
echo $addone = implode('-', $addone);

答案 1 :(得分:1)

您可以根据您的要求获得此信息。

如果DO-2500-99应为DO-2501-00,则以下代码可以正常工作。

$serialArr= explode('-', $getse->serial); 
$serialNo = (int)$serialArr [1].$serialArr [2];
$newSerialNo = $serialNo + 1; 
$newSerialNo = substr($newSerialNo, 0, -2)."-".substr($newSerialNo , -2);
$newSerial = $serialArr[0].'-'.$newSerialNo;

如果DO-2500-99应该是DO-2500-100,那么下面的代码可以工作。

$getse = 'DO-2500-99';
$serialArr= explode('-', $getse->serial); 
$serialNo = (int)$serialArr [2];
$serialArr[2] = $serialNo + 1; 
$newSerial = implode('-',$serialArr);

答案 2 :(得分:0)

DO-2500-04它是一个String值,你不能在其上使用算术运算符。如果您只想让最后一个计数器增加,那么您需要做的是通过将字符串分割为-来获取最后一个值。

然后获取最后一个值并将其递增,然后再按-加入数组。

要拆分并加入数组,我们可以使用explode()implode()

这是使用 explode()

从字符串中获取最后一个值的方法
$values=explode("-","DO-2500-04"); // $values is now array.
$lastvalue=(int)$values[2];
$lastvalue++;
if($lastvalue<9) {
   $lastvalue = "0" . $lastvalue;
}
$values[2]=$lastvalue;
$incremented_string=implode("-",$values);

explode中的第一个参数表示要分割字符串的字符,与implode中的第一个参数相同,表示您要加入数组的胶水。

http://php.net/manual/en/function.explode.php

http://php.net/manual/en/function.implode.php

答案 3 :(得分:0)

只是为了好玩,你可以在SQL中做很多这样的事情:

$getse = $DB_con->prepare("SELECT serial, 
    LEFT(serial,8) AS serialBase,
    SUBSTRING(serial,8) AS serialIdx 
    FROM `customer` WHERE user_add=:id
    ORDER BY serial DESC LIMIT 1");
$getse->execute(array(":id"=>$user_id));                  
$getse = $getse->fetch(PDO::FETCH_OBJ);
$addone = $getse->serialBase + str_pad(($getse->serialIdx + 1),2,'0',STR_PAD_LEFT);
echo $addone;

更新了SQL。