【问题标题】:PHP undefined Index ($_GET)PHP 未定义索引 ($_GET)
【发布时间】:2016-11-21 23:03:00
【问题描述】:

您好,我的代码有问题:

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

请帮帮我..我只想从“kunde”表中获取 ID

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

【问题讨论】:

  • 你应该使用isset();来检查变量$_GET['id']$_POST['id']是否存在。
  • if(isset($_GET['id'])){ echo "GET_ID 存在"; }else{ 回声“错误”; } if(isset($_POST['id'])){ echo "POST_ID 存在"; }else{ 回声“错误”;我得到“错误”,但我不知道为什么..
  • 我个人对两者都进行了测试。变量存在且不为空! if ( (isset($VAR)) &amp;&amp; (!empty($VAR)) ){ // use $VAR

标签: php variables indexing get undefined


【解决方案1】:

这个代码现在太复杂了,因为没有足够的信息。 代码太模糊了,因为我不知道你想用它做什么以及代码应该把你带到哪里。

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

如果您试图从餐桌客户那里获得它,那么您做错了。你现在从表'kunde'中得到它。您还在 WHERE 语句中要求提供 ID,但由于您试图通过实际语句获取它,因此您没有该 ID?

下面的代码是我认为你应该做的。

如果 ID 存在,则进行输入以发送 ID。

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

然后在下面的代码中检查是否设置了 'id' 并返回 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)
}

【讨论】:

    【解决方案2】:

    让我们在您提供的代码中解决一些问题:
    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'];
        }
    

    但请说清楚你在问什么。

    【讨论】:

      【解决方案3】:

      这是因为 $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 全局

      $_REQUEST 全局,它是 $_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'];
      

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 2013-01-26
        • 1970-01-01
        • 2015-03-24
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 2016-12-07
        • 1970-01-01
        相关资源
        最近更新 更多