我有一个书籍网站。我的书籍表包含字段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我已经发布的数据,感谢期待善意并回答这个愚蠢的问题和
答案 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,而不是只用空格替换字母数字字符