我正在为一个私人网站工作。我有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;
}
?>
用于检查存在的slug,它将创建新的独特slug;
<?php
$slug = $oslug;
$count = 1;
while (slug_exist($slug)) {
$slug =$oslug.'-'.$count++;
?>
我的问题是,如何检查来自两个表(表A dan表B)的存在slug并创建两个表中不存在的唯一slug?
如果您不确定我采取的措施,请告诉我。谢谢!
答案 0 :(得分: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。