Переименовать статью SLUG, если она уже существует

На моем сайте статей у меня есть настройки ID & Article SLUG, но вместо идентификатора я использую slug. Слизень считается первичным уникальным!

но когда пользователь добавляет существующий слаг снова, это приводит к смерти с ошибкой mysql. Дублирующая запись для ключа 'PRIMARY'

Я изменил код, чтобы проверить перед вставкой

    $qry="select * from marticles where slug='$slg'";
$res=mysql_query($qry) or die("Error in query!");
$count = mysql_num_rows($res);
if($count > 0) {
    echo "Slug Already Exists! Pls change Title/Slug";
    }

Теперь он показывает сообщение об ошибке пользователю перед вставкой

Но я хочу автоматически переименовать слаг вместо сообщения об ошибке, например, если предыдущий слаг является "article-on-environment", если пользователь снова вставит этот слаг, то он изменится на "article-on-environment-2" и затем next ""article- на-среду-3"так далее

Мне нужна помощь в поиске того же старого слизняка и переименования.

1 ответ

Решение

Вы можете выполнить вставку, а затем в mysql_error проверить код ошибки и, если это дублирующий код ключа, изменить слаг.

$slug='test';
$orig=$slug;
while(!$done) {
    $i++;
    mysql_query("insert into table set slug = '$slug'");
    if(mysql_errno() == 1062) {
        $slug=$orig."-$i";
    } else {
        $done=true;
    }
}
Другие вопросы по тегам