0

こんにちは、演習の 1 つのコードを変更しています。変更されたコードは実行されますが、このエラーが発生し続けます:

"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 または $ _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

$_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

このようなコードを書くことができます

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 に答える