如何创建自定义函数以在 php 中以这种 2021-0001 格式创建主要参考号

How to create custom function for create reference number as primary in this 2021-0001 format in php

我尝试创建主键值可自定义的增量格式。我编写 PHP 函数来使用以下函数生成主键。

    function create_referance_key($connect){

      /**********************create referance key********************************/
      $year = date('Y');

      $query = "
        SELECT MAX(strRefNo) AS refnum FROM claims
        WHERE strRefNo LIKE ''".$year."'%'";
     $statement = $connect->prepare($query);
     if($statement->execute())
     {   
        $result = $statement->fetchAll();
        //$RefNo = '';
        foreach($result as $row)
        {
              $RefNo = $row["refnum"];

              if($RefNo == ''){

              $RefNo = $year.'-'. str_pad(1, 4, '0', STR_PAD_LEFT);

              }else{
                 
              $array = explode("-",$RefNo);
              $RefNo = $year.'-'.str_pad($array[1] + 1, 4, 0, STR_PAD_LEFT);

              }

        }
        return $RefNo;
     }

 }

我想创建一个像 2021-0001,2021-0002,2021-0003 这样的密钥。我试了上面function.first的执行时间select query no data in the claim table.in case query return NULL.其他情况查询显示最大参考号。(两者都是检查输入虚拟数据)但它不 return 任何值。我的 SQL 查询部分没问题。我在 foreach 循环中犯了什么错误?

声明table结构:

简单~


$row = query_fetch_object(query(SELECT strRefNo FROM claims ORDER BY dtBillDate DESC LIMIT 0,1));

// SPLIT THE STRING INTO ARRAY using explode()
// print_r($getSplit) to know more what is inside the array
$getSplit = explode("/",$row->strRefNo);


$newRef = date("Y")."/".($getSplit[1] + 1);


你的功能没问题。但是

SELECT MAX(strRefNo) AS refnum FROM claims
        WHERE strRefNo LIKE ''".$year."'%';

参数绑定以错误的方式 ''".$year."'%' 应更改为 '".$year."%'

改变函数

function create_referance_key($connect, $empno){

      /**********************create referance key********************************/
      $year = date('Y');;

      $query = "
        SELECT MAX(strRefNo) AS refnum FROM claims
        WHERE strRefNo LIKE '".$year."%'";
     $statement = $connect->prepare($query);
     if($statement->execute())
     {   
        $result = $statement->fetchAll();
        //$RefNo = '';
        foreach($result as $row)
        {
              $RefNo = $row["refnum"];

              if(empty($RefNo)){

               $RefNo = $year.'-'. str_pad(1, 4, '0', STR_PAD_LEFT);

              }else{
                 
                 $array = explode("-",$RefNo);
                 $RefNo = $year.'-'.str_pad($array[1] + 1, 4, 0, STR_PAD_LEFT);

              }

        }
        return $RefNo;
     }

}