php - 独特的Slug问题自动增量

标签 php mysql mysqli

我的 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/

相关文章:

php - 使用 PHP mysqli 从文件执行复杂的 SQL

php - 使用循环插入数据时出现数据库错误

PHP Mysqli 字符编码

php - 带有位置下拉列表的搜索栏将两个结果相加 - PHP/mySQL

php - 如何使用 scandir() 进行数字升序排序

php - fatal error : Call to a member function bind_param() for login page

php - 我可以通过基于文本框中的值与表中列中的值之间的匹配的表单向 MySQL 表添加值吗?

php - 对于每个查询结果,将其添加到表中并给出一个 ID php

php - Laravel登录报错 'Header may not contain more than a single header, new line detected laravel login'

mysql - 使用 Rails 检索 "top x"记录的最有效方法