独特的弹头问题自动增量

时间:2015-05-21 01:57:35

标签: php mysql mysqli

我有像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;
    }

2 个答案:

答案 0 :(得分:1)

mysqli_fetch_array 选择下一行,而不是整个结果集,因此 $ slugs 只会包含第一个结果。

其次,如果你想从2开始,将 $ max 设置为1而不是0是有意义的。你的第一次迭代,1将被添加。

答案 1 :(得分:0)

  1. 只需选择" event_slug"相反" *"

    $ slug_query =" SELECT event_slug FROM pv_events WHERE event_slug LIKE'"。$ slug。"%'";

  2. 使用mysqli_fetch_all

    $ slugs = mysqli_fetch_all($ slug_result,MYSQLI_ASSOC);