如何避免基于2个表的重复slu and并创建独特的slug

问题描述 投票:1回答:1

我正在为一个私人网站工作。我有2张桌子:

表A(包含较旧的slu))。

表B(新slu))。

这里用于检查的代码存在slug并从表B创建唯一的slug(单表查询),这运行良好

 <?php  
  $target = "SELECT COUNT(`slug`) FROM `table B` WHERE `slug`='$slug'";
  $query= mysqli_query($kkdb, $target);
  $row = mysqli_fetch_row($query);  
  return ($row[0] == 1) ? true : false;
  }
  ?>

检查存在的slu will它将创造新的和独特的slug;

  <?php  
   $slug = $oslug;
   $count = 1;
   while (slug_exist($slug)) {
   $slug =$oslug.'-'.$count++;
   ?>

我的问题是,如何从两个表中检查存在的slu((表A dan表B)并创建两个表中不存在的唯一slug?

如果你不确定我正在采取什么,请告诉我。谢谢!

php mysql slug
1个回答
0
投票

创建一个视图AB,即表A和B slug值的UNION ALL。如果您无法创建视图,则可以在$ target中使用UNION ALL语法。

也就是说 - 你需要调整返回断言,因为你可以返回2的计数,即使slug作为两个表中的主键存在。

return ($row[0] >= 1) ? true : false;

编辑 - “查看AB”的说明:

说你有

TableA(slug varchar(100)主键)和TableB(slug varchar(100)主键)

然后

CREATE VIEW ViewAB AS
   SELECT a.slug FROM TableA a
   UNION ALL
   SELECT b.slug FROM TableB b;

而不是你的PHP代码引用TableA或TableB,让它引用ViewAB。

© www.soinside.com 2019 - 2024. All rights reserved.