我使用了这段PHP代码来转义我传递的所有参数:
<?php
foreach ($_GET as $key => $value) {
if(!is_array($value)){
$_GET[$key] = mysql_real_escape_string($value);
}
}
$offset = (isset($_GET['offset']) ? $_GET['offset'] : null);
echo "Offset is " . $offset;
?>
在这个例子中,无论我传递什么作为"offset",它都会返回"offset is"。如果我删除foreach循环,它返回"Offset is Hello"(或者我传递的任何东西)。
为什么fornext循环失去了参数-我已经使用了几个月的代码,它以前一直工作!
代码正常运行:
<?php
$_GET['offset'] = 'Hello';
foreach ($_GET as $key => $value) {
if(!is_array($value)){
$_GET[$key] = mysql_real_escape_string($value);
}
}
$offset = (isset($_GET['offset']) ? $_GET['offset'] : null);
echo "Offset is " . $offset;
?>
结果:Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ... on line 5
Offset is Hello
正如你所看到的值是正确的,所以可能在你的情况下,$_GET['offset']
包含其他东西,你使用mysql_
废弃的函数。
是的,愚蠢的我,我没有在我的脑海中把MySQL和解析参数联系起来。所有其他的代码,它的工作,我做一个连接到MySQL数据库首先。
谢谢。