gpt4 book ai didi

php - 不确定 .htaccess 文件是否正确。还有一些来自 mySQL 的 fetch 问题

转载 作者:行者123 更新时间:2023-11-29 11:34:53 26 4
gpt4 key购买 nike

在实现更干净的 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个小时来解决这个问题,但我真的找不到哪里出了问题!我可以点击首页文章上的链接,但是当我尝试输入文章时出现此错误:

Fatal error: Call to a member function fetch_assoc() on a non-object in /var/www/web/xxxxxxx/xxxxx.com/index.php on line 198

希望有人能帮忙。

最佳答案

将前导/添加到重写规则匹配中:

RewriteRule ^/article/(.*)/?$ index.php?id=$1 [NC,L]

请注意,这会将 www.example.com/article/headline/something/else/ 重写为 www.example.com/index.php?id=headline/something/else ,如果不需要,请使用更具限制性的字符集(例如 [A-z0-9_\-\.])而不是 .*

对于SQL,绝对建议使用PDO或类似于参数化来自请求变量的任何内容。也值得做一些filter/sanitize在使用变量之前先对其进行分析。

值得在运行 SQL 之前输出它,这样您就可以看到它正如您所期望的那样。还可以尝试复制该输出并直接在 mysql 命令行中或通过 PHPMyAdmin(或其他类似工具)运行它,看看是否获得了预期的数据。

if(isset($_GET['id'])) { 
$id = $_GET['id'];
$DB = "SELECT * FROM post WHERE overskrift = " . $id;
echo '<pre>' . $DB . </pre>;
$fetch=$conn->query($DB);
$blogpost = $fetch->fetch_assoc();

编辑

看到您上面的回复。 SQL 的问题是您传递了一个字符串,但没有将其封装在 SQL 中(请注意,PDO 参数化会自动为您处理此问题)。您的 SQL 行应为:

$DB = "SELECT * FROM post WHERE overskrift = '" . $id . "'";

但是说真的……不要这样做。参数化它!

关于php - 不确定 .htaccess 文件是否正确。还有一些来自 mySQL 的 fetch 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com