php - 如何将 ID 更改为 url slug
问题描述
我目前正在做所谓的友好 url,我有一个疑问,那就是是否可以隐藏 url 的 /id/。
目前我的网址如下所示:localhost/blog.php?=31
我希望它看起来像这样:localhost/blog?url_slug=example-for-this [url_slug]
我的代码是:
博客.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>
解决方案
我猜你找不到现有帖子的原因是因为你试图使用=
字符串字段。这是有关它的信息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;
}
推荐阅读
- php - Laravel 前端脚手架不起作用
- html - YouTube 嵌入自定义分辨率
- c - 此 C 程序中的意外返回值
- javascript - 为什么反应构建不编译我在静态文件夹中的所有图片?
- swift - 我希望计数快速显示在最后一个故事板中
- django - 从 Django 迁移中调用 emit_post_migrate_signal 是否安全?
- react-query - 好奇为什么我们不能在 onSuccess 中获得查询中的参数?
- javascript - 新手努力通过浏览器运行 Javascript
- sql - Laravel 中的 WhereColumn 为空
- django - 链式下拉验证错误。形式作品