从数据库表

时间:2017-05-22 07:40:47

标签: php mysql .htaccess

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

以上网址显示了帖子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']; 

结果:

-admin

- 我的帖子

-my_title_post

我正在尝试隐藏$_GET['id'];添加.htaccess

RewriteEngine on
RewriteRule ^newfolder/(.*) folder/index.php?id=$1

我的新网址是:example.com/newfolder/22

但是,这仍然不太正确。我想在URL部分显示一个长帖子URL,而不是ID。 所以我的意思是,如何使URL成为:

example.com/newfolder/my_title_post

我已将SQL更改为: "SELECT * FROM posts WHERE url=".$_GET['id']但是服务器无法处理请求。

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

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

1 个答案:

答案 0 :(得分:0)

您的my_title_post是一个字符串。但是您的查询被视为整数。引用$_GET['id']将其视为字符串。

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

最好使用参数绑定来阻止SQL injection。至少你需要使用mysqli_real_escape_string来阻止它。