Php 从数据库表中的ID获取长文章URL

Php 从数据库表中的ID获取长文章URL,php,mysql,.htaccess,Php,Mysql,.htaccess,我的网站有一个url(example.com/folder/index.php?id=22) 上面的URL显示帖子id 22。这是另一个重要部分: |-------|-----------|-------------------|-------------------| | id | user | title | url | |-------|-----------|-------------------|-----------

我的网站有一个url
(example.com/folder/index.php?id=22)

上面的URL显示帖子id 22。这是另一个重要部分:

|-------|-----------|-------------------|-------------------|
|   id  |   user    |       title       |       url         |
|-------|-----------|-------------------|-------------------|
|   22  |   Admin   |   My Title Posts  |   my_title_post   |
|       |           |                   |                   |
|-------|-----------|-------------------|-------------------|

include_once 'dbconnect.php';

$query = $con->query("SELECT * FROM posts WHERE id=".$_GET['id']);
$Row=$query->fetch_array();

echo $Row['user'];
echo $Row['title'];
echo $Row['url']; 
结果:

-管理员

-我的职称

-我的职位

我试图隐藏
$\u GET['id'通过添加
.htaccess

RewriteEngine on
RewriteRule ^newfolder/(.*) folder/index.php?id=$1
我的新URL是:
example.com/newfolder/22

但是,这仍然不完全正确。我试图在URL部分显示一个长文章URL,而不是ID。 我的意思是,如何使URL变成:

example.com/newfolder/my_title_post
我已将SQL更改为:
“从url=“.$\u GET['id']”的帖子中选择*
,但服务器无法处理该请求

我还尝试更改数据库url列中的主键,但请求被拒绝。在这里,我将其设置为Unique,但它仍然不起作用

有可能吗?
如果有人知道,我会通过Cpanel、htaccess、SQL或其他方式接受建议。谢谢..

您的
我的标题\u帖子
是一个字符串。但您的查询被视为一个整数。引用
$\u GET['id']
将其视为字符串

"SELECT * FROM posts WHERE url='".$_GET['id'] . "'";

另外,最好使用参数绑定来防止。至少你需要使用它来阻止它。

你知道如果有人访问这个url:example.com/folder/index.php会发生什么吗?id=1%20或%201%3D1。阅读有关SQL注入的内容-@lloiacono我不知道您的意思“我已将SQL更改为:“SELECT*FROM posts WHERE url=“.$\u GET['id'],但服务器无法处理请求。”–这听起来更像是您无法正确处理数据库错误-因此,您首先应该阅读。询问数据库,它对您的语句有什么问题,这样您就可以解决它。@lloiacono哦,是的。我不小心把代码剪窄了。原始代码使用real_escape_stringI试图告诉您,您的代码容易受到SQL注入的影响,您永远不应该将用户输入直接用于查询。在我上面的示例中,您的查询如下所示:从id=1或1=1的帖子中选择*;这将显示所有记录,甚至可能是攻击者删除您的数据库的最坏情况。对于您的回答,我不得不说非常感谢。这很有效。:)