我遇到了一个脚本的问题,它是几年前在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';
?>
有关如何解决问题的任何想法?图片在这里:
答案 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
...