$ _GET变量的未定义索引,其设置但仍然不起作用?

时间:2013-02-03 18:07:31

标签: php pdo prepared-statement

我从这里重定向

<a href="update_post.php?updid=<?php echo $_SESSION['id']; ?>">Update</a>

和显示错误的代码是

<?php include('../includes/connections.php'); ?>
<?php
try{
if(isset($_POST['submit'])){
$title = $_POST['title'];
$post = $_POST['post'];
$dates = $_POST['date'];
$sql = 'UPDATE `blog`.`contents` SET `titles` = :title, `posts` = :post, `dates` = :date    WHERE `contents`.`id` = :idendity';
$result = $pdo->prepare($sql);
$result->bindValue(':title',$title);
$result->bindValue(':post',$post);
$result->bindValue(':date',$dates);
$result->bindValue(':idendity',$_GET['updid']);
$result->execute();
$count = $result->rowCount();
    if($count == 1){
        header('location: index.php');
    }else{
        echo 'Problem Occoured';
    }
}
}
catch(PDOException $e){
echo "Problem: " .$e->getMessage();
}
?>

显示错误:-Notice:未定义的索引:第13行的C:\ xampp \ htdocs \ myblog \ admin \ update_post.php中的updid 问题被忽视

<form action="update_post.php" method="post">
    Title:<br/>
    <input style="height:40px;" size="110" type="text" name="title" /><br />
    Post:<br />
    <textarea rows="30" cols="85"  name="post" ></textarea><br />
    Date:<br />
    <input type="text" name="date" /><br/ >
    <input type="submit" name="submit" />
</form>

1 个答案:

答案 0 :(得分:1)

  

是表单提交,这是我检查是否提交的原因。

您应该在表单中的隐藏字段中加入$_SESSION['id']

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

......并改变:

$result->bindValue(':idendity',$_GET['updid']);

...进入:

$result->bindValue(':idendity',$_POST['updid']);

修改

首先,您的上述问题有误。正如评论中所提到的,如果您点击链接,isset($_POST['submit'])将无法返回true

当您通过提交$_POST部分中post的表单访问该页面时,

method会有值。

对于$_GET,其值取自URL的查询字符串:

http://yourpage.php?foo=bar&bar=foo

bar$_GET['foo']

的值

foo$_GET['bar']

的值

我已经搜索了基本的$ _POST / $ _ GET解释但无法找到一个:-D