【问题标题】:How to generate unique tag_id start from F-00001 in php如何在php中从F-00001开始生成唯一的tag_id
【发布时间】:2018-11-03 04:13:44
【问题描述】:

使用 php 和 mysql 将日期插入项目表时如何生成从 F-00001 开始的唯一 tag_id。

这是我的桌子。我使用 MySQL 在我的数据库表中有三列。

CREATE TABLE item (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
tag_id VARCHAR(8) NOT NULL
)

【问题讨论】:

  • 我的问题:为什么数据库中的id需要这样格式化?我的意思是,为什么不使用自动增量字段并在需要时调整您的查询和显示? str_pad()ing 一个整数并在前面加上 F- 是一个快速完成的任务。省去你的麻烦。
  • @mickmackusa,首先这是一个数据库表的小例子,我的真实数据看起来像这样i.stack.imgur.com/bhmSa.jpg 所以,我有找到项目的标签列,应该有一个唯一的 F-(数字)有助于轻松查看库存的数据库。
  • 尼克是个聪明人。听尼克的。
  • 我真的很喜欢他的工作方式和工作方式,谢谢

标签: php mysql php-7


【解决方案1】:

正如@mickmackusa 指出的那样,您不需要在数据库中包含此字段,因为您可以根据自动增量id 值自动生成它。有很多方法可以做到这一点。

使用generated column(MySQL 5.7 或更高版本):

CREATE TABLE item (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(30) NOT NULL,
tag_id VARCHAR(8) AS CONCAT('F-', LPAD(id, 5, '0'))
)

使用view

CREATE VIEW item_view AS 
SELECT *, CONCAT('F-', LPAD(id, 5, '0')) AS tag_id FROM item

使用str_pad在PHP中生成:

// assume $row is an associative array of row of table
$tag_id = 'F-' . str_pad($row['id'], 5, '0', STR_PAD_LEFT);

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2018-09-03
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多