PDO 不从字符串中提取数据,但可以很好地处理整数
PDO not pulling data from string but works fine with integer
我正在尝试构建一个 pages.php 文件,我也可以传递 slug 信息并使用 mod-rewrite 使数据库输出看起来像实际页面。
问题是代码可以工作,但只能传递整数。如果我通过 page_id 它将进行调用并工作,如果我通过 page_slug 它将失败。
这是我的重写规则
RewriteRule ^service/(.*)$ pages.php?pid= [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']}
Paste for pages.php http://pastebin.com/qA7zzvnY
Paste for Database.php http://pastebin.com/8pqXbzby
这是数据库表
已知问题。
SELECT page_slug
returns 空白页面,没有任何错误或源代码。
SELECT page_id
returns 页面真相 pages.php?pid=zzzzzz 或重写 service/zzzzz.html 我不确定为什么我不能从数据库中提取页面 slug当我过去用用户名和其他随机数据完成它时。但是在提供的 $sql 代码中它并不想工作。
您需要在查询中 $pid
周围加上单引号(或正确转义的双引号)。此外,正如评论中所指出的,您对 SQL 注入持开放态度,需要立即解决。
我正在尝试构建一个 pages.php 文件,我也可以传递 slug 信息并使用 mod-rewrite 使数据库输出看起来像实际页面。
问题是代码可以工作,但只能传递整数。如果我通过 page_id 它将进行调用并工作,如果我通过 page_slug 它将失败。
这是我的重写规则
RewriteRule ^service/(.*)$ pages.php?pid= [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']}
Paste for pages.php http://pastebin.com/qA7zzvnY
Paste for Database.php http://pastebin.com/8pqXbzby
这是数据库表
已知问题。
SELECT page_slug
returns 空白页面,没有任何错误或源代码。
SELECT page_id
returns 页面真相 pages.php?pid=zzzzzz 或重写 service/zzzzz.html 我不确定为什么我不能从数据库中提取页面 slug当我过去用用户名和其他随机数据完成它时。但是在提供的 $sql 代码中它并不想工作。
您需要在查询中 $pid
周围加上单引号(或正确转义的双引号)。此外,正如评论中所指出的,您对 SQL 注入持开放态度,需要立即解决。