PHP未定义指数($ _GET)

问题描述:

你好,我有一些问题,我的代码:

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用3210

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

+3

[PHP的可能重复的 “总结”: “通知:未定义的变量”和“注意:未定义的索引”](http://*.com/questions/4261133/php-notice-undefined-variable-and-notice-undefined-index) – Phiter

+0

你应该使用'isset();'来检查是否变量'$ _GET ['id']'或'$ _POST ['id']'存在或不存在。 – 2016-11-21 23:12:05

+0

if(isset($ _GET ['id'])){ \t \t echo“GET_ID exists”; \t} else { \t \t echo“Error”; \t} \t \t 如果(isset($ _ POST [ 'ID'])){ \t \t回声 “POST_ID存在”; \t} else { \t \t echo“Error”; } 我得到了“错误”,但我不知道为什么.. – Syntrax

这段代码现在太复杂了,因为没有足够的信息。 代码太模糊了,因为我没有理解你想要做什么以及代码应该引导你到哪里。

下面将可能帮助您:

,如果你想获得它的形式表的客户,你就错了。你现在从表'kunde'得到它。你还需要在WHERE语句中提供一个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) 
} 

让我们来解决您提供的代码一些事情:
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']; 
    } 

不过,请清楚你的要求。

+0

任何理由downvote? – Ronald

发生这种情况是因为$ id没有从IF语句中声明出来,即$ id变量只存在于if或else语句中,而且它不存在。

要解决它,你可以:

1#申报的$ id以外的if语句

这使得你的代码运行

$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'];