【发布时间】:2016-04-21 22:24:46
【问题描述】:
在我实现了更干净的 URL 路径后,我在从 mySQL 数据库获取数据时遇到了一些问题。
代替:www.example.com/index.php?id=headline
我会有这样的路径:www.example.com/article/headline
我的 .htaccess 文件看起来像这样,并且路径似乎有效:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [L,R=301,DPI]
RewriteRule ^article/(.*)/?$ index.php?id=$1 [NC,L]
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|ico|css|js)$
那么这是您必须点击的链接,才能进入文章页面:
<a href="article/'. urldecode($row["overskrift"]) .'">
并且从这个 $row 中获取数据进展顺利。
问题是当我必须 $_GET id 时,就好像它无法正确获取下一步:
if(isset($_GET['id'])) {
$id = $_GET['id'];
$DB = "SELECT * FROM post WHERE overskrift = " . $id;
$fetch=$conn->query($DB);
$blogpost = $fetch->fetch_assoc();
最后一行出现了一个错误,我已经在这个问题上挣扎了大约 3 个小时,但我真的找不到有问题的地方! 我可以点击首页文章上的链接,但是当我尝试输入文章时出现此错误:
致命错误:在第 198 行的 /var/www/web/xxxxxxx/xxxxx.com/index.php 中的非对象上调用成员函数 fetch_assoc()
希望有人能帮忙。
【问题讨论】:
-
查询失败。
$id是什么?您编写查询的方式使您面临 SQL 注入。您应该使用准备好的语句。 -
$id 在 .htaccess 文件中设置为 id=$1。那就是 (。*)。然后在我的href中,我将它设置为 $row["overskrift"] Overskrift=headline (丹麦语) 所以我的想法是 $id 将是数据库的标题。然后我说 $id 应该等于 mySQL 语句中的标题。但是它似乎不起作用