如何查询MYSQL数据库以提取唯一ID

时间:2018-04-20 20:17:08

标签: php mysql sql database

我正在创建一个功能,允许管理员用户创建自己的SKU代码格式,以便在创建新产品时自动生成SKU代码。

管理员用户可以使用以下部件类型定义格式。管理员用户可以决定它们的格式和顺序.SKU格式完全灵活,适合所有业务。

  • 产品类别 - 只能选择一次并且是可选的
  • 产品品牌 - 只能选择一次并且是可选的
  • 颜色 - 只能选择一次并且是可选的
  • 短划线( - ) - 这些可以多次使用并且是可选的
  • 句点(。) - 这些可以多次使用并且是可选的
  • 下划线(_) - 这些可以多次使用并且是可选的
  • 唯一ID - 只能选择一次并且是必需的。

示例格式

格式:[产品类别] [ - ] [产品品牌] [ - ] [颜色] [ - ] [unqiue id] 结果:PHONES-APPLE-GOLD-001

格式:[unqiue id] [。] [产品品牌] 结果:001.APPLE

格式:[产品品牌] [unqiue id] [颜色] 结果:APPLE001GOLD

管理员用户还将定义分配给每个部件类型的代码,例如:

分类

电话= PHONES 计算机= COMP

品牌

Apple = APPLE Hewlett-Packard = HP

颜色

黄金=黄金 黄色= YELL

将要求内容编辑者(添加新产品的人)使用选择下拉列表为新产品构建SKU代码。

使用示例格式[产品类别] [ - ] [产品品牌] [ - ] [颜色] [ - ] [unqiue id]将意味着用户将看到3个下拉菜单:

从类别下拉列表中,他们可以选择COMP 从drodpown品牌,他们可能会选择惠普 从颜色下拉列表中,他们可以选择GOLD

然后他们将提交表格并返回SKU代码:COMP-HP-GOLD-002

问题

我很难想出查询数据库的最佳方法,以检查是否已存在类似的SKU代码,如果是,则获取最大唯一ID并将数字增加1.

由于管理员用户在定义格式时具有灵活性,因此很难做到这一点。

对于上面的例子,我可能会使用以下内容:

$contructed = $product."-".$brand."-".$color);

$query = $db->query("SELECT (MAX(replace(replace(replace(sku,'".$product."-',''),'".$brand."-',''),'".$color."-',''))+1) as SKU FROM `product` WHERE `sku` LIKE '%".$contructed."%'");

然而,我假设每个人都会使用这种格式和这些部分,但他们不会这样做。我没有考虑到人们会:

  1. 使用不同的格式
  2. 使用不同的/不是所有的零件类型
  3. 我唯一的保证是管理员用户将始终使用必须使用unqiue ID部件类型。

    有没有人对解决这种灵活性的最佳方法有任何想法?

0 个答案:

没有答案