未定义的索引:张贴在迷你日志中


Undefined index: post in miniblog

可能重复:
PHP:"Notice:Undefined variable"answers"Notice:Undefined index"

我到处找了找,找不出这个问题。

$post   = (string) mysql_real_escape_string($_GET['post']);<br>
$page   = (int) mysql_real_escape_string(intval($_GET['page']));

我不明白错误undefined index:post是什么意思。我在$post$page行都得到了这个错误。

$_GET变量只有在URL有查询字符串时才会填充(这通常意味着表单是用GET方法提交的)
因此,您必须首先检查$_GET是否包含值,然后使用这些值:

if(isset($_GET['post']) && isset($_GET['page'))
{
    $post   = mysqli_real_escape_string($_GET['post']);
    $page   = intval($_GET['page']);
}

在第一行代码中,强制转换为string是无用的:mysqli_real_escape_string无论如何都会返回一个字符串
在你的第二行代码中:

  • 使用mysql_real_escape_string,因为您使用的是intval:整数值不需要任何额外的转义
  • 转换为int是无用的,这已经用intval完成了

重要提示:

由于所有mysql_*函数都已弃用,并且将在未来的PHP版本中删除,因此应该使用MySQLi或PDO(我在代码示例中使用了MySQLi)。

这个错误正是警告所告诉您的。

$_GET是作为HTTP GET参数传入的项的数组。

$_GET['page']$_GET['post']向您提供未定义的索引警告,因为关联数组中没有关键字为"post"或"page"的项。

弄清楚发生了什么的一种方法是对整个$_GET数组进行var_dump(),看看其中有什么

var_dump($_GET)