首页 > 解决方案 > 如何将 ID 更改为 url slug

问题描述

我目前正在做所谓的友好 url,我有一个疑问,那就是是否可以隐藏 url 的 /id/。

目前我的网址如下所示:localhost/blog.php?=31

我希望它看起来像这样:localhost/blog?url_slug=example-for-this [url_slug]

IMAGE_TABLE

我的代码是:

博客.php

<?php include('app/database/db.php');


if (isset($_GET['id'])){
    $id = $_GET['id'];
    $post = selectOne('post', ['id' => $id]);
}

?>

<html>
<p><?php echo $post['title']?></php>
</html>

数据库.php

function selectOne($table, $conditions)
{
   
    global $conn;
    $sql = "SELECT * FROM $table ";
        $i = 0;
                foreach ($conditions as $key => $value) {
                    
            if ($i === 0){
                $sql = $sql . " WHERE $key=?";
                
            } else {
               $sql = $sql . " AND $key=?"; 
            }
            $i++;
        }
    
        $sql = $sql . " LIMIT 1";
        $stmt = executeQuery($sql, $conditions);
        $records = $stmt->get_result()->fetch_assoc();
        return $records;
    
    }

我在几乎所有论坛中都尝试了不同的方法,但我无法让它发挥作用。

编辑:我也试过这个,但它不起作用

博客.php

<?php include('app/database/db.php');


if (isset($_GET['url_slug'])){
    $url_slug = $_GET['url_slug'];
    $post = selectOne('post', ['url_slug' => $url_slug]);
}

?>

<html>
<p><?php echo $post['title']?></php>
</html>

标签: phpurlslug

解决方案


我猜你找不到现有帖子的原因是因为你试图使用=字符串字段。这是有关它的信息stackoverflow.com/a/2336940/7265862

我将添加另一个按 slug 字段搜索的函数:

if (isset($_GET['url_slug'])){
    $url_slug = $_GET['url_slug'];
    $post = selectPostBySlug($url_slug);
}

function selectPostBySlug($slug)
{
    global $conn;
    $sql = "SELECT * FROM post WHERE url_slug like ? LIMIT 1";
    $stmt = executeQuery($sql, [$slug]);
    $records = $stmt->get_result()->fetch_assoc();
    return $records;
}

推荐阅读