gpt4 book ai didi

php - PDO 不会从字符串中提取数据,但可以很好地处理整数

转载 作者:行者123 更新时间:2023-11-29 22:30:35 25 4
gpt4 key购买 nike

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

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

这是我的重写规则

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

这是pages.php 中的选择查询,我正在使用 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

这是数据库表 enter image description here

已知问题。

SELECT page_slug

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

SELECT page_id

返回页面真实值pages.php?pid=zzzzzz 或重写service/zzzzz.html 我不知道为什么我不能从数据库中提取页面slug,因为我过去使用用户名和其他随机数据完成了该操作。但在提供的 $sql 代码中它不想工作。

最佳答案

您需要在查询中将 $pid 引起单引号(或正确转义的双引号)。另外,正如评论中所指出的,您对 SQL 注入(inject)持开放态度,需要立即解决这个问题。

关于php - PDO 不会从字符串中提取数据,但可以很好地处理整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29838496/

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