使用slug url从mysql db中获取文章

时间:2015-12-02 09:01:40

标签: php mysql .htaccess slug

我正在开发自己的PHP Mysql站点。

我以前用ID来获取数据:(uint)

现在我想用slug改变网址:

mysite.com/articles.php?id=12

mysite.com/articles/google-search

我不想使用ID和数字。

我的表:

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                     |
+-------------------------------------------------------------------+

我尝试用上面的代码代替urlslug它说$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']); } 我用谷歌搜索,甚至搜索堆栈问题,我没有得到任何帮助。请帮助我提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果网址如此mysite.com/articles.php?article=google-search 然后,而不是id从网址获取article并将条件更改为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'];    

答案 1 :(得分:0)

您可以在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