我的数据库、员工号和数据中有一列是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]);
} 发布于 2020-11-19 13:27:30
您想要最高的数目,这与行数没有任何关系。如果我理解这些规则,您可以这样做以获得已经使用的数字:
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%'说,当心并发访问可能引起的问题!
发布于 2020-11-19 13:07:14
也许这里最好的答案是建议不要尝试管理PHP应用程序中的员工编号序列。相反,让您的数据库通过自动增量列或类似的方式进行繁重的提升。请注意,如果所有员工编号都以ACZ开头,那么您实际上只需要一种生成序列的方法,这是数据库相当擅长的事情。
https://stackoverflow.com/questions/64912253
复制相似问题