注意:我的数据库中所有字段的未定义索引

时间:2012-10-06 17:21:02

标签: php database undefined

我遇到了一个脚本的问题,它是几年前在Uni创建的,它工作得很好然后我没有得到这个通知,现在每个字段我得到一个“通知:未定义的索引”

我读过这与未能声明变量有关,我需要起诉一个isset?但我仍然不确定如何在代码中实现它。

以下是代码:

<?php
require 'server.php';

$results = $dbh->prepare('SELECT * FROM details WHERE id = :id');
$results->execute(array(
     ':id' => $_GET['id'],
     ));

if (isset($_POST['submit'] )) header("Location: template/header.php"); {
    $update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
           county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
           homephone = :homephone WHERE id = :id');
    $update->execute(array(
        ':id' => $_POST['id'],
        ':firstname' => $_POST['firstname'],
        ':surname' => $_POST['surname'],
        ':houseno' => $_POST['houseno'],
        ':street' => $_POST['street'],
        ':town' => $_POST['town'],
        ':county' => $_POST['county'],
        ':postcode' => $_POST['postcode'],
        ':mobile' => $_POST['mobile'],
        ':nickname' => $_POST['nickname'],
        ':website' => $_POST['website'],
        ':homephone' => $_POST['homephone'],    
    ));

    $row = $results->fetch();
}

require 'template/header.php';
?>

有关如何解决问题的任何想法?图片在这里:

https://dl.dropbox.com/u/10062971/phpnotice.JPG

2 个答案:

答案 0 :(得分:0)

您的代码没有任何意义:设置$_POST['submit'] )后,您将重定向到另一个页面,以便在未设置POST时运行使用$_POST['submit'] )变量的代码。< / p>

这就是php的样子:

if (isset($_POST['submit'] ))
{
   header("Location: template/header.php");
}

$update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
       county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
       homephone = :homephone WHERE id = :id');
$update->execute(array(
    ':id' => $_POST['id'],
    ':firstname' => $_POST['firstname'],
    ':surname' => $_POST['surname'],
    ':houseno' => $_POST['houseno'],
    ':street' => $_POST['street'],
    ':town' => $_POST['town'],
    ':county' => $_POST['county'],
    ':postcode' => $_POST['postcode'],
    ':mobile' => $_POST['mobile'],
    ':nickname' => $_POST['nickname'],
    ':website' => $_POST['website'],
    ':homephone' => $_POST['homephone'],    
));

$row = $results->fetch();

header究竟要求什么?

顺便说一下,你可能想要这样的东西:

require 'server.php';

if (isset($_POST['submit'] ))
{
  $update = $dbh->prepare('UPDATE details SET firstname = :firstname, surname = :surname, houseno = :houseno, street = :street, town= :town,
       county = :county, postcode = :postcode,  mobile = :mobile, nickname = :nickname, website = :website,
       homephone = :homephone WHERE id = :id');
  $update->execute(array(
    ':id' => $_POST['id'],
    ':firstname' => $_POST['firstname'],
    ':surname' => $_POST['surname'],
    ':houseno' => $_POST['houseno'],
    ':street' => $_POST['street'],
    ':town' => $_POST['town'],
    ':county' => $_POST['county'],
    ':postcode' => $_POST['postcode'],
    ':mobile' => $_POST['mobile'],
    ':nickname' => $_POST['nickname'],
    ':website' => $_POST['website'],
    ':homephone' => $_POST['homephone'],    
  ));

  // show message or something
}
else
{
  // normal get request, nothing posted
  $results = $dbh->prepare('SELECT * FROM details WHERE id = :id');
  $results->execute(array(':id' => $_GET['id'],
     ));
  $row = $results->fetch();

  // show rest of the page
}

答案 1 :(得分:0)

在使用isset$_POST上的任何索引之前,使用$_GET检查它们是否存在。

if (isset($_GET['id'])) {
  $results->execute(array(
    ':id' => $_GET['id'],
  ));
}

...

':id' => isset($_POST['id']) ? $_POST['id'] : '',
':firstname' => isset($_POST['firstname']) ? $_POST['firstname'] : '',
// and so on
...