0

嗨,我正在修改我的一项练习的代码。修改后的代码确实运行,但我不断收到此错误:

"Undefined index: category_id in C:\xampp\htdocs\ex_starts\ch04_ex1\add_category.php on line 5"

您能否告诉我应该如何在以下代码中初始化 category_id 的索引?

谢谢!!

这是我的代码:

<?php  // Get the category data
  $category_id = $_POST['category_id'];
  $name = $_POST['name']; // Validate inputs
  if ( empty($name) ) {
  $error = "Invalid category data. Check all fields and try again.";
  include('error.php');
  } else {
   // If valid, add the product to the database
   require_once('database.php');
   $query = "INSERT INTO categories
                (categoryID, categoryName)
             VALUES
                ('$category_id', '$name')";
   $db->exec($query);
   // Display the Category List page
   include('category_list.php'); 
   }
   ?>
4

5 回答 5

3

您的 POST 数据不包含类别 ID。

$category_id = $_POST['category_id'];

这失败了,因为$_POST['category_id']没有设置。使用isset() 进行检查:

$category_id = isset($_POST['category_id']) ? $_POST['category_id'] : false;
于 2012-10-05T07:05:04.923 回答
1

您的 $_POST 数组似乎不包含索引“category_id”。$_POST 数组由表单变量填充,从之前的表单提交发送到 php 文件。因此,根据您想要执行的操作,$category_id如果未设置帖子索引,您可以使用默认值填充变量:

$category_id = (isset($_POST['category_id']) ? $_POST['category_id'] : 1; 
// replace 1 with your default category

如果您不想使用 $_POST 数组,您可以选择使用 $_GET 范围。这是用 url 参数填充的。因此,如果您将您的网站称为 index.php?category_id=1 您可以简单地通过

$category_id = (isset($_GET['category_id']) ? $_GET['category_id'] : 1; 
// replace 1 with your default category
于 2012-10-05T07:09:17.187 回答
1

使用 $_POST 或 $_GET 从表单中检索变量时,您可能会遇到以下错误:

Notice: Undefined index 'fields of the table' in 'path of  php 
file being executes' on line 'current line' 

为避免此错误,只需测试表的字段是否已使用函数 isset() 进行了初始化。

// Before using $_POST['value']    
if (isset($_POST['value']))    
{    
          // Instructions if $_POST['value'] exist    
}    

根据服务器的配置通知此类错误。默认情况下不通知,因为它被认为是一个小错误,对应于常量 E_NOTICE。

您可以使用 error_reporting 函数更改报告的错误类型。

于 2012-10-05T07:04:52.390 回答
1

你可以写这样的代码

if(isset($_POST['category_id']) &&  isset($_POST['name']))
{
       // write your code here
}
于 2012-10-05T07:05:57.437 回答
0

使用isset它不会像这样给你这个警告

<?php
if(isset($_POST['category_id']))
{
  $category_id = $_POST['category_id'];
  //your code
}
?>
于 2012-10-05T07:05:26.280 回答