单击URL并调用php脚本时,PHP未定义索引错误

时间:2011-09-29 15:16:08

标签: php

我从我的主页调用了一个PHP脚本,我喜欢这样:

echo '<a href="/problems/delete_problem.php?problem_id='.$problem_id.'">Delete</a>';

所以这很标准。

然后在我的PHP中我有这段代码:

<?php
// delete_problem

include '../connect.php'; // Here I have db connection settings

error_log ( ".......in delete problem");

$problem_id = mysql_real_escape_string($_GET["problem_id"]);

?>

我尝试获取problem_id的最后一行是抛出未定义的索引错误。知道为什么吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

你在connect.php里面有一个实际的连接吗?或者只是存储变量等?

mysql_real_escape_string可能会导致问题,就好像连接不可用一样,它会失败。

除此之外,尝试回显GET变量的内容。您还可以使用(isset($_GET["problem_id"]))来检查它是否存在。

答案 1 :(得分:2)

对于来自用户的值,请始终确保它们存在并可能验证其格式。

使用:

if (isset($_GET['problem_id']) && trim($_GET['problem_id']) != '') {
    $problem_id = $_GET['problem_id'];
    // make sure it is a number
} else {
   echo "No problem id given!";
}

出现该警告是因为$ _GET数组不包含值problem_id,很可能是因为它未通过URL传递。

答案 2 :(得分:2)

Bleh,所有使用mysql_real_escape字符串的人......

在尝试将变量值分配给另一个变量之前,请务必检查变量是否已设置。

也可以使用(int)来施放!!

if (isset($_GET["problem_id"])){
  $problem_id = (int) $_GET["problem_id"];
}