读取最后的数据并生成字母数字员工编号



我的数据库中有一列员工编号和数据,即ACZ2020000。当我添加员工时,生成的员工编号是ACZ2020002。如何生成ACZ2020001?请帮帮我。非常感谢,伙计们。

这就是我所做的:

public function generate_employee_id() {
$query = $this->db->query("SELECT COUNT(*) AS num_rows FROM tbl_accounts");
$row = $query->fetch_object();
$number = $row->num_rows;
++$number;

$len = strlen($number);
for($i = $len; $i < 3; ++$i) {
$number = '0' . $number;
}
$employee_number = 'ACZ'. date("Y") . $number;
echo json_encode(['employee_number' => $employee_number]);
} 

您想要最高的数字,这与行数无关。如果我理解规则,你可以这样做来获得已经使用的数字:

SELECT employee_id, CAST(SUBSTR(employee_id, 5) AS signed) -- MySQL flavour
FROM tbl_accounts
WHERE employee_id LIKE 'ACZ20%'

和好的老MAX()抢最新:

SELECT MAX(CAST(SUBSTR(employee_id, 5) AS SIGNED)) + 1 AS next
FROM tbl_accounts
WHERE employee_id LIKE 'ACZ20%'

话虽如此,但要小心并发访问带来的潜在问题!

也许这里最好的答案是建议不要尝试从PHP应用程序管理员工编号序列。相反,让您的数据库通过自动递增列或类似的方式来完成繁重的工作。请注意,如果所有员工编号都以ACZ开头,那么您实际上只需要一种生成序列的方法,而这正是数据库非常擅长做的事情。

最新更新