Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO不从字符串中提取数据,但可以很好地处理integer_Php_Mysql_.htaccess_Mod Rewrite_Pdo - Fatal编程技术网

Php PDO不从字符串中提取数据,但可以很好地处理integer

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

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

问题是,代码可以工作,但只能通过传递整数。如果我通过pageid,它将发出呼叫并工作,如果我通过pageslug,它将失败

这是我的重写规则

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相比,我不太喜欢它_