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

时间:2014-06-28 14:34:04

标签: php mysql url slug

我有一个书籍网站。我的书籍表包含字段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我已经发布的数据,感谢期待善意并回答这个愚蠢的问题和

2 个答案:

答案 0 :(得分: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 :(得分: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,而不是只用空格替换字母数字字符