我有像my-cool-slug
格式化的slug但是我需要自动增加一些以使类似的slug独特,例如my-cool-slug-2
-3,-4等。我正在关注这篇文章https://stackoverflow.com/a/15972027/635027要做到这一点,但我遇到了一个问题。
当插入MySQL时,slug停止在-1计数,并且在找到重复时继续输入over而不是递增到下一个整数。以下是我的查询和相关行。我究竟做错了什么?
$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;
}
答案 0 :(得分:1)
mysqli_fetch_array 选择下一行,而不是整个结果集,因此 $ slugs 只会包含第一个结果。
其次,如果你想从2开始,将 $ max 设置为1而不是0是有意义的。你的第一次迭代,1将被添加。
答案 1 :(得分:0)
只需选择" event_slug"相反" *"
$ slug_query =" SELECT event_slug FROM pv_events WHERE event_slug LIKE'"。$ slug。"%'";
使用mysqli_fetch_all
$ slugs = mysqli_fetch_all($ slug_result,MYSQLI_ASSOC);