为什么我得到“未定义的索引”?
Why do I get “undefined index”?
我的网页出现以下 5 个错误:
Notice: Undefined index: town in C:\xampp\htdocs\dispatch1.php on line 51
Notice: Undefined index: location in C:\xampp\htdocs\dispatch1.php on line 52
Notice: Undefined index: incident_type in C:\xampp\htdocs\dispatch1.php on line 53
Notice: Undefined index: time_date in C:\xampp\htdocs\dispatch1.php on line 54
Notice: Undefined index: admin in C:\xampp\htdocs\dispatch1.php on line 55
这是我的输出 table 的代码,它从数据库中获取数据(它确实显示了数据库中的数据):
<?php include("manage_post.php"); ?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta http-equiv="refresh" content="2" >
</head>
<body>
<div align="center" class="CSSTableGenerator" height="100%">
<form action="dispatch1.php" method="get" id="dispatch">
<table width="968" height="248" border="1" align="center" cellpadding="10" cellspacing="0" rules="rows" id="incidents" style="color:#333333;border-collapse:collapse;text-align:left;">
<tr style="color:White;background-color:#5D7B9D;font-weight:bold;font-style:italic;">
<th scope="col">TOWN</th>
<th scope="col">LOCATION</th>
<th scope="col">INCIDENT TYPE</th>
<th scope="col">TIME/DATE</th>
<th scope="col">ADMIN</th>
</tr>
<tr style="color:#333333;background-color:#F7F6F3;font-weight:bold;">
<?php
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
$db = mysqli_connect('localhost','root','') or die("Database error");
mysqli_select_db($db, 'mydatabase');
$result= mysqli_query($db, "select * from cad");
while($row = mysqli_fetch_array($result))
{
echo "<td>" .$row['town'] ."</td>";
echo "<td>" .$row['location'] ."</td>";
echo "<td>" .$row['incident_type'] ."</td>";
echo "<td>" .$row['time_date'] ."</td>";
echo "<td>" .$row['admin'] ."</td>";
}
?>
</tr>
</table>
</form>
</body>
</html>
然后,这是我的 "manage_post.php" 页面,它将数据从表单发布到数据库:
<?php
if( $_POST )
{
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type = $_POST['incident_type'];
$time_date = $_POST['time_date'];
$admin = $_POST['admin'];
$town = mysql_real_escape_string($town);
$location = mysql_real_escape_string($location);
$incident_type = mysql_real_escape_string($incident_type);
$time_date = mysql_real_escape_string($time_date);
$admin = mysql_real_escape_string($admin);
$query = "
INSERT INTO `mydatabase`.`cad` (`town`, `location`, `incident_type`, `time_date`, `admin`) VALUES ('$town', '$location', '$incident_type', '$time_date', '$admin');";
mysql_query($query);
mysql_close($con);
}
?>
我试图仔细检查它并弄清楚它有什么问题,但就是找不到。如果您需要表格代码,请告诉我。我的 PHP 代码的另一个奇怪问题是 table 不是垂直的,而是水平的,并且一直越过屏幕。 Here is a picture of it. 然后我必须水平滚动才能查看所有内容。
检查变量
if(isset($_POST['town'])) {
$town = $_POST['town'];
}
if(isset($_POST['location'])) {
$location = $_POST['location'];
}
在您显示的第一个文件中,您试图访问 POST 个值:
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
但是还没有 POSTed。您仍在显示将要 发布的表单。显示表单如何依赖于已提交的相同表单?
为了有条件地检查值是否已 POSTed,您可以在第二个文件中执行相同的操作:
if( $_POST )
{
// use the POST values
}
您可以选择有条件地检查每个单独的值:
if( isset($_POST['town']) )
{
// use the town value
}
if( isset($_POST['location']) )
{
// use the location value
}
// etc.
至于没有值时显示什么,由你决定。
$ _POST
或 $ _GET
是 PHP 的两个特殊函数,用于从用户填写的表单中获取变量。在使用这些功能时,用户可能会遇到错误
- Notice: Undefined index.
可以在 PHP isset ()
的帮助下避免此错误。将通知此错误,但这取决于服务器的配置。注意:未定义的索引是一个小错误,因此默认不通知。借助 error_reporting
函数,可以更改报告的错误类型。
这部分代码有问题
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
数组 $_POST 中没有索引 'town'、'location'、...。您可以使用 isset 轻松修复通知,以便检查索引是否存在。如果是,则将值赋给变量 $town ...
if(isset($_POST['town'])) { ... }
您可以避免所有的 if...isset 并只将 POST 中的内容转储到与发布的索引同名的变量中。您实际上只需要 if/isset 查看特定已发布变量中的内容,但如果这无关紧要,这是避免您遇到的错误的最简单方法。
foreach($_POST as $k=>$v){
${$k}=mysql_real_escape_string($v);
}
我的网页出现以下 5 个错误:
Notice: Undefined index: town in C:\xampp\htdocs\dispatch1.php on line 51
Notice: Undefined index: location in C:\xampp\htdocs\dispatch1.php on line 52
Notice: Undefined index: incident_type in C:\xampp\htdocs\dispatch1.php on line 53
Notice: Undefined index: time_date in C:\xampp\htdocs\dispatch1.php on line 54
Notice: Undefined index: admin in C:\xampp\htdocs\dispatch1.php on line 55
这是我的输出 table 的代码,它从数据库中获取数据(它确实显示了数据库中的数据):
<?php include("manage_post.php"); ?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta http-equiv="refresh" content="2" >
</head>
<body>
<div align="center" class="CSSTableGenerator" height="100%">
<form action="dispatch1.php" method="get" id="dispatch">
<table width="968" height="248" border="1" align="center" cellpadding="10" cellspacing="0" rules="rows" id="incidents" style="color:#333333;border-collapse:collapse;text-align:left;">
<tr style="color:White;background-color:#5D7B9D;font-weight:bold;font-style:italic;">
<th scope="col">TOWN</th>
<th scope="col">LOCATION</th>
<th scope="col">INCIDENT TYPE</th>
<th scope="col">TIME/DATE</th>
<th scope="col">ADMIN</th>
</tr>
<tr style="color:#333333;background-color:#F7F6F3;font-weight:bold;">
<?php
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
$db = mysqli_connect('localhost','root','') or die("Database error");
mysqli_select_db($db, 'mydatabase');
$result= mysqli_query($db, "select * from cad");
while($row = mysqli_fetch_array($result))
{
echo "<td>" .$row['town'] ."</td>";
echo "<td>" .$row['location'] ."</td>";
echo "<td>" .$row['incident_type'] ."</td>";
echo "<td>" .$row['time_date'] ."</td>";
echo "<td>" .$row['admin'] ."</td>";
}
?>
</tr>
</table>
</form>
</body>
</html>
然后,这是我的 "manage_post.php" 页面,它将数据从表单发布到数据库:
<?php
if( $_POST )
{
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydatabase", $con);
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type = $_POST['incident_type'];
$time_date = $_POST['time_date'];
$admin = $_POST['admin'];
$town = mysql_real_escape_string($town);
$location = mysql_real_escape_string($location);
$incident_type = mysql_real_escape_string($incident_type);
$time_date = mysql_real_escape_string($time_date);
$admin = mysql_real_escape_string($admin);
$query = "
INSERT INTO `mydatabase`.`cad` (`town`, `location`, `incident_type`, `time_date`, `admin`) VALUES ('$town', '$location', '$incident_type', '$time_date', '$admin');";
mysql_query($query);
mysql_close($con);
}
?>
我试图仔细检查它并弄清楚它有什么问题,但就是找不到。如果您需要表格代码,请告诉我。我的 PHP 代码的另一个奇怪问题是 table 不是垂直的,而是水平的,并且一直越过屏幕。 Here is a picture of it. 然后我必须水平滚动才能查看所有内容。
检查变量
if(isset($_POST['town'])) {
$town = $_POST['town'];
}
if(isset($_POST['location'])) {
$location = $_POST['location'];
}
在您显示的第一个文件中,您试图访问 POST 个值:
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
但是还没有 POSTed。您仍在显示将要 发布的表单。显示表单如何依赖于已提交的相同表单?
为了有条件地检查值是否已 POSTed,您可以在第二个文件中执行相同的操作:
if( $_POST )
{
// use the POST values
}
您可以选择有条件地检查每个单独的值:
if( isset($_POST['town']) )
{
// use the town value
}
if( isset($_POST['location']) )
{
// use the location value
}
// etc.
至于没有值时显示什么,由你决定。
$ _POST
或 $ _GET
是 PHP 的两个特殊函数,用于从用户填写的表单中获取变量。在使用这些功能时,用户可能会遇到错误
- Notice: Undefined index.
可以在 PHP isset ()
的帮助下避免此错误。将通知此错误,但这取决于服务器的配置。注意:未定义的索引是一个小错误,因此默认不通知。借助 error_reporting
函数,可以更改报告的错误类型。
这部分代码有问题
$town = $_POST['town'];
$location = $_POST['location'];
$incident_type= $_POST['incident_type'];
$time_date= $_POST['time_date'];
$admin = $_POST['admin'];
数组 $_POST 中没有索引 'town'、'location'、...。您可以使用 isset 轻松修复通知,以便检查索引是否存在。如果是,则将值赋给变量 $town ...
if(isset($_POST['town'])) { ... }
您可以避免所有的 if...isset 并只将 POST 中的内容转储到与发布的索引同名的变量中。您实际上只需要 if/isset 查看特定已发布变量中的内容,但如果这无关紧要,这是避免您遇到的错误的最简单方法。
foreach($_POST as $k=>$v){
${$k}=mysql_real_escape_string($v);
}