PDO不从字符串中提取数据,但在整数

时间:2015-04-24 03:59:02

标签: php mysql .htaccess mod-rewrite pdo

我正在尝试构建一个pages.php文件,我也可以通过slug信息并使用mod-rewrite使数据库输出看起来像实际的页面。

问题是代码可以工作,但只能传递整数。如果我传递了page_id,它将进行调用并工作,如果我传递page_slug则会失败。

这是我的重写规则

RewriteRule ^service/(.*)$ pages.php?pid=$1 [QSA,L]

这是在pages.php中的select查询,我正在使用require_once(“Database.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 http://pastebin.com/qA7zzvnY

     

粘贴Database.php http://pastebin.com/8pqXbzby

这是数据库表 enter image description here

已知问题。

  

SELECT page_slug

返回空白页面,没有任何错误或源代码。

  

SELECT page_id

返回页面真相pages.php?pid = zzzzzz或重写service / zzzzz.html我不知道为什么我在过去使用用户名和其他随机数据时无法从数据库中提取页面slug。但是在提供的$ sql代码中它不想工作。

1 个答案:

答案 0 :(得分:0)

在查询中$pid周围需要单引号(或正确转义的双引号)。此外,正如评论中所指出的,您对SQL注入非常开放,需要立即解决这个问题。