如何将url slug添加到php mysql中的现有数据中

问题描述 投票:0回答:2

我有一个书籍网站。我的书籍表包含字段ID,标题,pdf和正文,我发布了大约4000本书,我的书籍显示了像https://www.bookspk.site/2017/12/barre-sagheer-pak-o-hind-me-ilam-e-hadith.html这样的网址。但现在我创建了url字段,并且可以使用url slug和这段代码

function string_limit_words($string, $word_limit) {
$words = explode(' ', $string);
return implode(' ', array_slice($words, 0, $word_limit));
}
$blog='';

if($_SERVER["REQUEST_METHOD"] == "POST")
{
$title=mysql_real_escape_string($_POST['title']);
$body=mysql_real_escape_string($_POST['body']);
$title=htmlentities($title);
$body=htmlentities($body);
$date=date("Y/m/d");

$newtitle=string_limit_words($title, 6);
$urltitle=preg_replace('/[^a-z0-9]/i',' ', $newtitle);

$newurltitle=str_replace(" ","-",$newtitle);
$url=$date.'/'.$newurltitle.'.html';

但问题是,我如何插入url slug我已发布的数据,感谢期待善意并回答这个愚蠢的问题和

php mysql url slug
2个回答
1
投票

我不确定我是否理解这个问题,但如果您在添加现在创建slug的代码之前尝试获取插入数据库中的所有先前记录的slug。您必须创建一个查询,选择所有没有slug的记录,调用创建slug的函数并使用正确的值更新每个记录。

(编辑) 首先,您不应再使用mysql_query,因为它自5.5.0以来已被弃用。以下是您可以使用的代码示例:

$res = $mysqli->query('SELECT id, title FROM table WHERE slug = ""');
while($obj = $res->fetch_object()){
   $newtitle=string_limit_words($obj->title, 6);
   $urltitle=preg_replace('/[^a-z0-9]/i',' ', $newtitle);
   // AND HERE UPDATE YOUR TABLE WITH A WHERE ID = $obj->id
}

1
投票

这是Johnny Dew的代码版本,由于我还不能发表评论,我将此作为答案发布..


    $res = $mysqli->query('SELECT id, title FROM table WHERE slug = ""');
    while($obj = $res->fetch_object()){
       $newtitle=string_limit_words($obj->title, 6);
       $urltitle=preg_replace('/[^a-z0-9]/i',' ', $newtitle);

       // AND HERE UPDATE YOUR TABLE WITH A WHERE ID = $obj->id
        $mysqli->query('UPDATE table SET slug=$urltitle WHERE ID = $obj->id');
    }

您可能希望使用slug类/函数从title中生成更好的slug,而不仅仅是用空格替换字母数字字符

© www.soinside.com 2019 - 2024. All rights reserved.