如何添加url段塞到现有的数据在php mysql


How to add url slug to existing data in php mysql

我有一个图书网站。我的书表包含字段id,标题,pdf和正文,我已经发布了大约4000本书,我的书显示url如https://www.bookspk.site/2017/12/barre-sagheer-pak-o-hind-me-ilam-e-hadith.html。但现在我创建了url字段,并能够使用url段符与此代码

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的代码之前插入数据库中的所有先前记录的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
}

这是Johnny Dew的代码的一个版本,因为我还不能评论,我把这个作为一个答案。

<>之前$res = $mysqli->query('SELECT id, title FROM table WHERE slug = ' ' ');While ($obj = $res->fetch_object()){$ newtitle = string_limit_words (obj ->标题,6);$ urltitle = preg_replace ('/^ a-z0-9]/我',' ',newtitle美元);//这里更新你的表,WHERE ID = $obj-> ID$mysqli->query('UPDATE table SET slug=$urltitle WHERE ID =$ obj-> ID ');}之前

您可能希望使用一个段符类/函数来从title生成更好的段符,而不是仅仅用空格

替换字母数字字符。