使用 slug url 从 mysql db 获取文章
Posted
技术标签:
【中文标题】使用 slug url 从 mysql db 获取文章【英文标题】:fetching article from mysql db with slug url 【发布时间】:2016-03-06 10:45:15 【问题描述】:我曾经像这样通过 id 获取数据:mysite.com/articles.php?id=12
现在我想用 slug 更改网址:
mysite.com/articles/google-search
或
mysite.com/articles.php?article=google-search
我不想使用 id 和数字。
我的桌子:
+----+---------------+---------+------------------------------------+
| id | title | article | urlslug |
+----+---------------+---------+------------------------------------+
| 12 | google search | xxxxxxx | google-search |
| 13 | bing yahoo | xxxxxxx | bing-yahoo |
| 14 | friendly seo | xxxxxxx | friendly-seo |
+-------------------------------------------------------------------+
我使用下面的代码通过 id 获取数据:
$id = $_GET['id'];
$id = mysqli_real_escape_string($conn,$id);
$query = "SELECT * FROM `table` WHERE `id`='" . $id . "'";
$result = mysqli_query($conn,$query);
while($row = mysqli_fetch_array($result))
echo ($row['title']);
echo ($row['article']);
我通过替换 urlslug 尝试了上面的代码,上面写着Invalid ID specified.
我用谷歌搜索,甚至搜索堆栈问题,但没有得到任何帮助。请帮助我。提前致谢。
【问题讨论】:
你能回显echo $_GET['id'];
【参考方案1】:
如果网址是这样的mysite.com/articles.php?article=google-search
然后从 url 获取 article
而不是 id
并将条件更改为 urlslug
而不是 id。
$slug = $_GET['article'];
$slug = mysqli_real_escape_string($conn,$slug);
$query = "SELECT * FROM `table` WHERE `urlslug`='" . $slug. "'";
$result = mysqli_query($conn,$query);
//Since slug is unique you will get only 1 result so no need to loop
$row = mysqli_fetch_array($result);
echo $row['title'];
echo $row['article'];
【讨论】:
slug 必须是唯一的。所以你不需要担心文章的数量。 天哪,我对此完全陌生。我按照你建议的方式尝试了,但它说指定的 id 无效 @dan 这意味着您在应用程序的某个位置检查了id
。 php 没有提供这样的消息invalid id specified
所以在你的代码中找到它.. 你的问题中没有提到。我认为这是一个非常小的问题。
invalid id specified
你有没有在你的代码的任何部分给出这样的信息......???请检查。
让我们continue this discussion in chat.【参考方案2】:
您可以在 Root/.htaccess 中使用以下规则
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^articles/([^/]+)/?$ /articles.php?id=$1 [NC,L]
这将重写
example.com/articles/123
到
example.com/articles.php?id=123
【讨论】:
以上是关于使用 slug url 从 mysql db 获取文章的主要内容,如果未能解决你的问题,请参考以下文章
Django:“如何在将 url() 传递给 MyClass.as_view() 之前从 url() 获取 slug?”或“如何检查注册是不是开放?”