【问题标题】:auto increment `trackingcode` column every insert to database每次插入数据库时​​自动增加“trackingcode”列
【发布时间】:2019-03-05 11:34:08
【问题描述】:

我在我的数据库中创建了一个名为 trackingcode 的字段,下面是它生成的代码示例:

现在我想在生成时开始TS-001等等......

例子:

TS-001
TS-002
TS-003
TS-004
SO ON...

我不知道从哪里开始,我尝试将trackingcode 设置为 TS-000,然后将 mysql 列更改为 AUTO_INCREMENT,但没有成功。

无论如何,这是我生成随机数的默认代码:

<?php
//insert.php
$connect = mysqli_connect("localhost", "root", "", "pcrequest");
if(isset($_POST["reqname"]))
{
 $length = 3;
 $trackingcode = 'TS-' . substr(str_shuffle("0123456789"), 0, $length);
 $req_date = $_POST["req_date"];
 $reqname = $_POST["reqname"];
 $date = $_POST["date"];
 $empname = $_POST["empname"];
 $position = $_POST["position"];
 $account = $_POST["account"];
 $platform = $_POST["platform"];
 $processor = $_POST["processor"];
 $ram = $_POST["ram"];
 $monitor = $_POST["monitor"];
 $phone = $_POST["phone"];
 $phonetype = $_POST["phonetype"];
 $headset = $_POST["headset"];
 $req_table = $_POST["req_table"];
 $req_chair = $_POST["req_chair"];
 $approval = $_POST["approval"];
 $status = $_POST["status"];
 $query = '';
 

  for($count = 0; $count<count($reqname); $count++)
  {
  $req_date_clean = mysqli_real_escape_string($connect, $req_date[$count]);
  $reqname_clean = mysqli_real_escape_string($connect, $reqname[$count]);
  $date_clean = mysqli_real_escape_string($connect, $date[$count]);
  $empname_clean = mysqli_real_escape_string($connect, $empname[$count]);
  $position_clean = mysqli_real_escape_string($connect, $position[$count]);
  $account_clean = mysqli_real_escape_string($connect, $account[$count]);
  $platform_clean = mysqli_real_escape_string($connect, $platform[$count]);
  $processor_clean = mysqli_real_escape_string($connect, $processor[$count]);
  $ram_clean = mysqli_real_escape_string($connect, $ram[$count]);
  $monitor_clean = mysqli_real_escape_string($connect, $monitor[$count]);
  $phone_clean = mysqli_real_escape_string($connect, $phone[$count]);
  $phonetype_clean = mysqli_real_escape_string($connect, $phonetype[$count]);
  $headset_clean = mysqli_real_escape_string($connect, $headset[$count]);
  $req_table_clean = mysqli_real_escape_string($connect, $req_table[$count]);
  $req_chair_clean = mysqli_real_escape_string($connect, $req_chair[$count]);
  $approval_clean = mysqli_real_escape_string($connect, $approval[$count]);
  $status_clean = mysqli_real_escape_string($connect, $status[$count]);
  if($req_date_clean != '' && $reqname_clean != '' && $date_clean != '' && $empname_clean != '' && $position_clean != '' && $account_clean != '' && $platform_clean != '' && $processor_clean != '' && $ram_clean != '' && $monitor_clean != '' && $phone_clean != '' && $phonetype_clean != '' && $headset_clean != '' && $req_table_clean != '' && $req_chair_clean != '' && $approval_clean != '' && $status_clean != '')
  {
   $query .= '
   INSERT INTO request(trackingcode, req_date, reqname, date, empname, position, account, platform, processor, ram, monitor, phone, phonetype, headset, req_table, req_chair, approval, status) 
   VALUES("'.$trackingcode.'", "'.$req_date_clean.'", "'.$reqname_clean.'", "'.$date_clean.'", "'.$empname_clean.'", "'.$position_clean.'", "'.$account_clean.'", "'.$platform_clean.'", "'.$processor_clean.'", "'.$ram_clean.'", "'.$monitor_clean.'", "'.$phone_clean.'", "'.$phonetype_clean.'", "'.$headset_clean.'", "'.$req_table_clean.'", "'.$req_chair_clean.'", "'.$approval_clean.'", "'.$status_clean.'"); 
   ';
  }

}

 if($query != '')
 {
  if(mysqli_multi_query($connect, $query))
  {
   echo 'Successfuly Sent!';
  }
  else
  {
   echo 'Error';
  }
 }
 else
 {
  echo 'All fields are required!';
 }
}
?>

【问题讨论】:

    标签: javascript php html mysql database


    【解决方案1】:

    您为什么不简单地使用具有自动增量的经典索引,并在 id 之前使用 PHP 甚至更好的 MySQL 设置字符串“TS-”?

    db-fiddle working example here

    在我们的对话之后在下面的 cmets 中进行编辑:

    SELECT CONCAT("TS-", LPAD(id_test, CHAR_LENGTH((SELECT MAX(id_test) FROM TEST)), '0')) AS trackingcode FROM TEST 
    

    db-fiddle working example of an adaptative solution

    因此,这是实现目标的最快、最干净的方式。

    当您的行数少于 10 行时,tracking_codes 将为“TS-01”、“TS-02”等...当您的行数少于 100 行时,它们将是“TS-001”、TS -002" 等...

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 2015-06-16
    • 2019-10-21
    • 1970-01-01
    • 2018-08-26
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多