2017-01-21 10 views
1

これは私のカテゴリテーブルです。基本的にカテゴリとサブカテゴリがあります。 ParentCategoryIdは、そのカテゴリのサブカテゴリです。例えば、私は3つのParentCategoryID 1を持っています。つまり、category_id 1の下にあるサブカテゴリを意味します。したがって、isSubCategoryは1に設定されています。これはサブカテゴリであり、0はカテゴリの最初の4つのデータに対してparentCateogryIDがnullカテゴリ外部キーテーブルにデータを挿入するPHP

は、私はすでに[カテゴリの追加機能を持っていると私は私のいつものPHPのクエリを実行する方法に今私が追加サブカテゴリの機能を持っていると思いますが、非常に混乱して。

<form method="POST"> 
      <?php 
      if(isset($_POST['submit'])){ 
       include 'testdb.php'; 

       $addcategory = $_POST['categoryname']; 
       $parentcategory = $_POST['parentcategoryID']; 

       $query = mysqli_query($con, "SELECT categoryname FROM category WHERE categoryname = '.$addcategory.'"); 

       $insert = mysqli_query($con, "INSERT INTO category (`categoryname`,`ParentCategoryID`,`isSubCategory`) VALUES ('$addcategory','$parentcategory','1')"); 
       if(!$insert){ 
        echo mysqli_error($con); 
       } 
       else{ 
        echo 'Category successfully added!'; 
       } 

      } 
      ?> 

構造 enter image description here

いつでも追加しようとしてイム。これは同じである必要があります(下記をご覧のPIC)と同じIDを持っている enter image description here

ニーズenter image description here ので、挿入されたサブカテゴリーは enter image description here

+0

**警告**:mysqliを使用する場合、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してユーザーデータをクエリに追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

1

外部キーが自己参照でない食品カテゴリ表に示します同じテーブル内であなたのサブカテゴリが別のテーブルにある場合(上記の解決策は本当に面倒です)、外部キーを使用すると、挿入機能がはるかに簡単になります。

とにかく、新しいサブカテゴリを追加したければ、また

$addcategory = $_POST['categoryname']; 
$parentcategory = $_POST['parentcategory']; 

$insert = mysqli_query($con, 
"INSERT INTO category 
(`categoryname`, 
`ParentCategoryID`, 
`isSubCategory`) 
VALUES 
('$addcategory', 
'$parentcategory' 
'1')"); 

、プリペアドステートメントを使用することを検討してください。..または少なくともPOST上mysqli_escape_stringを実行するあなたは、彼らは私が「のようなカテゴリを挿入することができるようになるされているとして、それらを残して...に取っているのparams; DROP TABLEユーザー;

+0

上記のスクリプトは、parentcategoryidが外部キーではないという前提で書かれているので、引き続き動作するはずです。 – Eoghan

+0

テーブル名が何であるかわかりません。しかし、カテゴリIDの更新に基づいて既存のテーブルを更新する必要がある場合は、UPDATEクエリを使用します。 http://www.w3schools.com/php/php_mysql_update.asp – Eoghan

関連する問題