Php PDO不从字符串中提取数据,但可以很好地处理integer
我正在尝试构建一个pages.php文件,我也可以传递slug信息,并使用mod rewrite使数据库输出看起来像实际的页面 问题是,代码可以工作,但只能通过传递整数。如果我通过pageid,它将发出呼叫并工作,如果我通过pageslug,它将失败 这是我的重写规则Php PDO不从字符串中提取数据,但可以很好地处理integer,php,mysql,.htaccess,mod-rewrite,pdo,Php,Mysql,.htaccess,Mod Rewrite,Pdo,我正在尝试构建一个pages.php文件,我也可以传递slug信息,并使用mod rewrite使数据库输出看起来像实际的页面 问题是,代码可以工作,但只能通过传递整数。如果我通过pageid,它将发出呼叫并工作,如果我通过pageslug,它将失败 这是我的重写规则 RewriteRule ^service/(.*)$ pages.php?pid=$1 [QSA,L] 这里是pages.php中的select查询,我使用require_onceDatabase.php;调用数据库文件 $sq
RewriteRule ^service/(.*)$ pages.php?pid=$1 [QSA,L]
这里是pages.php中的select查询,我使用require_onceDatabase.php;调用数据库文件
$sql = "
SELECT
page_title,
page_html_title,
page_slug,
page_content
FROM pages
WHERE page_slug = $pid
";
$q = $db->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
$r = $q->fetch();
数据在以下内容中放入html{$r['page_title']}
为pages.php粘贴
为Database.php粘贴
这是数据库表
已知问题
选择页面\u slug
返回空页,没有任何错误或源代码
选择页面id
返回页面truth pages.php?pid=zzzzzzz或rewrite service/zzzzz.html我不确定为什么我不能从数据库中提取页面slug,因为我以前使用用户名和其他随机数据来提取页面slug。但是在提供的$sql代码中,它不想工作。在查询中,需要在$pid周围使用单引号或正确转义的双引号。另外,正如评论中指出的,您对SQL注入非常开放,需要立即解决这个问题。表中的字段是如何声明的?另外,顺便提一下,既然您已经在使用PDO了,为什么不使用预先准备好的语句?@Havelock我正在做$r['field_name']。我对PDO不是很在行,可悲的是我讨厌它,因为它让我的生活一团糟。你经历了什么错误?另外,正如Havelock所说,确保使用准备好的语句,否则很容易成为SQL注入攻击的目标。我的意思是用MySQL表的定义来更新您的问题,即field_name|type,更具体地说,page_title|varchar40,etc@Havelock我知道,我是PDO的新成员。遗憾的是,与旧mysql相比,我不太喜欢它_