PHP未定义索引($ _GET)

时间:2016-11-21 23:03:01

标签: php variables indexing get undefined

您好,我的代码存在问题:

if (!empty($_GET['id'])){
    $id = $_GET['id'];
}else if (!empty($_POST['id'])){
    $id = $_POST['id'];
}

$get_id = 'SELECT * FROM kunde WHERE id=' . $id;
$r = mysql_query($get_id);
$t = mysql_fetch_array($r);

$_SESSION['id'] = $t['id'];

我也有隐藏的领域:

<input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>">

但我总是遇到同样的错误:

Notice: Undefined variable: id in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 30

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Uebungsklausur\PHP\change.php on line 32

请帮助我们..我只是想从表中获取ID&#34; kunde&#34;

编辑:谢谢你们,我解决了它。问题出在表单标签中。那是第一个代码:<form method="post"> 现在它是:'<form method="post" action=" change.php?id=' . $row[0] . '">';

3 个答案:

答案 0 :(得分:1)

这段代码现在太复杂了,因为没有足够的信息。 代码太模糊了,因为我还没有弄清楚你想用它做什么以及代码应该引导你去哪里。

以下内容可能对您有所帮助:

如果您正试图从表客户处获得它,那么您做错了。你现在可以从桌子上找到它&#39; kunde&#39;。您还要在WHERE声明中要求提供一个ID,因为您试图通过实际声明来获取该声明吗?

以下代码是我认为你要做的。

创建一个用它发送ID的输入(如果存在)。

<input type="hidden" name="id" value="<?php if (isset($_SESSION['id'])) { echo $_SESSION['id']; } ?>">

然后在以下代码中检查&#39; id&#39;设置并返回id?

if (isset($_POST['id'])) {
$id = $_POST['id'];
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION)
}
if (isset($_GET['id'])) {
$id = $_GET['id'];
// REST OF CODE (The $get_id, $r, $t and setting $_SESSION)
}

答案 1 :(得分:0)

让我们在您提供的代码上解决一些问题:
1.您同时使用GET和POST?我想知道你实际使用的是哪一个。
2.我假设您从$ _SESSION ['id']中获取了ID。另一种方法是你可以直接从中获取$ id。

记住这些事情:

我们假设您正在使用GET来获取ID。

首先,改变一下:

if (!empty($_GET['id'])){
    $id = $_GET['id'];
}else if (!empty($_POST['id'])){
    $id = $_POST['id'];
}

到这个

    if (isset($_GET['id'])){
        $id = $_GET['id'];
    }
   else if (!isset($GET['id'])) {
        $id = $_SESSION['id'];
    }

但请说清楚你在问什么。

答案 2 :(得分:0)

这是因为$ id没有在IF语句中声明,即$ id变量仅存在于if或else语句中,并且在它之外并不存在。

要解决此问题,您可以:

1#在if语句

之外声明$ id

这使您的代码运行

   $id; // or $id = null
   if (!empty($_GET['id'])){
       $id = $_GET['id'];
   }else if (!empty($_POST['id'])){
       $id = $_POST['id'];
   }

   $get_id = 'SELECT * FROM kunde WHERE id=' . $id;
   $r = mysql_query($get_id);
   $t = mysql_fetch_array($r);

   $_SESSION['id'] = $t['id'];

2#使用三元运算符

使用起来非常简单:

   $id = (!empty($_GET['id'])) ? $_GET['id'] : $_POST['id'];

   $get_id = 'SELECT * FROM kunde WHERE id=' . $id;
   $r = mysql_query($get_id);
   $t = mysql_fetch_array($r);

   $_SESSION['id'] = $t['id'];

3#使用$ _REQUEST global

$ _请求全球它是一个&#34;摘要&#34; $ _POST和$ _GET

   $id = $_REQUEST['id'];

   $get_id = 'SELECT * FROM kunde WHERE id=' . $id;
   $r = mysql_query($get_id);
   $t = mysql_fetch_array($r);

   $_SESSION['id'] = $t['id'];