gpt4 book ai didi

php - GET 变量未被访问

转载 作者:搜寻专家 更新时间:2023-10-31 21:39:28 25 4
gpt4 key购买 nike

我有一个简单的 7 行 PHP脚本,如下所示:

代码

require( "connect.php" );
$ctg = ($_GET['ctg'])? $_GET['ctg']:'movie';
$offset = ($_GET['off'])? $_GET['off']:30;
$query = "SELECT `msg`, `id`, `nick`, `date` FROM `entries` WHERE `ctg` = ? ORDER BY `id` DESC LIMIT 15 OFFSET ?";
$statemnt = $conn->prepare( $query );
$statemnt->bindParam( 1, $ctg, PDO::PARAM_STR );
$statemnt->bindParam( 2, $offset, PDO::PARAM_INT );
$statemnt->execute();
$results = $statemnt->fetchAll( PDO::FETCH_ASSOC );
echo "$ctg\n$offset\n" . count($results) . "\n";

问题

我面临的问题是这样的:当我在控制台中执行文件时(使用 php fetch.php),所有的 echo 都很好用。当我在没有 $_GET 变量的浏览器中打开页面时,观察到相同的输出。

当我只为它提供 ctg 索引变量时,浏览器中的输出是相同的(例如 http://localhost/fetch.php?ctg=docu) 输出正确;像这样:

docu
30
15

但是当我传递 off 索引变量时(fetch.php?off=15 OR fetch.php?ctg=docu&off=15 fetch.php?off=15&ctg=docu);输出总是这样的:

docu
15
0

问题

输出(和 var_dump)都显示传递给两个变量的正确值,那么为什么 PDO 语句没有收到任何结果?为什么 count($results) 保持 0

感谢任何帮助。


附言

我还包含了以下声明:

$statemnt->debugDumpParams();

将其转储到浏览器(和控制台)中:

SQL: [102] SELECT `msg`, `id`, `nick`, `date` FROM `entries` WHERE `ctg` = ? ORDER BY `id` DESC LIMIT 15 OFFSET ?
Params: 2
Key: Position #0:
paramno=0
name=[0] ""
is_param=1
param_type=2
Key: Position #1:
paramno=1
name=[0] ""
is_param=1
param_type=1

最佳答案

可能 $off GET 变量被视为字符串,而 int 是预期的

改变:

$offset = ($_GET['off'])? $_GET['off']:30; 

$offset = ($_GET['off'])?(intval($_GET['off']):30; 

当然应该对所有GET变量

进行适当的验证

关于php - GET 变量未被访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12846118/

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