我的 slug 格式类似于 my-cool-slug
,但是我需要自动递增一些以使类似的 slug 唯一,例如 my-cool-slug-2
- 3、-4 等。我正在关注这篇文章 https://stackoverflow.com/a/15972027/635027这样做,但我遇到了一个问题。
插入 MySQL 时,slug 会在 -1 计数处停止,并在查找重复项时不断输入该值,而不是递增到下一个整数。以下是我的查询和相关行。我究竟做错了什么?
$slug = 'my-cool-slug';
$slug_query = "SELECT * FROM pv_events WHERE event_slug LIKE '".$slug."%'";
$slug_result = mysqli_query($conn,$slug_query);
$slugs = mysqli_fetch_array($slug_result,MYSQLI_ASSOC);
if(mysqli_num_rows($slug_result) !== 0 && in_array($slug, $slugs)){
$max = 0;
//keep incrementing $max until a space is found
while(in_array( ($slug . '-' . ++$max ), $slugs) );
//update $slug with the appendage
$slug .= '-' . $max;
}
最佳答案
<强> mysqli_fetch_array 选择下一行,而不是整个结果集,因此 $slugs 将仅包含第一个结果。
其次,如果您想从 2 开始,则将 $max 设置为 1,而不是 0 是有意义的。在 while 的第一次迭代中,将添加 1。
关于php - 独特的Slug问题自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30363301/