【问题标题】:Inserting data in a foreign key table PHP在外键表 PHP 中插入数据
【发布时间】:2017-06-06 02:28:48
【问题描述】:

这是我的类别表。基本上有一个类别和子类别。 ParentCategoryId 是类别下的子类别。例如,我有三个 ParentCategoryID 1,这意味着它是 category_id 1 下的子类别,因此 isSubCategory 设置为 1 表示是,它是一个子类别,0 表示它是一个类别,这就是为什么前四个数据的 parentCateogryID 为空的原因,因为它们是类别

我已经有一个添加类别功能,现在我想要一个添加子类别功能,但对如何执行我通常的 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!';
                }

            }
            ?>

结构

每当我试图添加。

需要有相同的ID(看下图) 这需要相同,以便插入的子类别显示在食品类别表中

【问题讨论】:

  • 警告:使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug切勿$_POST$_GET 数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。

标签: javascript php mysql database insert


【解决方案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 .. 让它们保持原样允许我插入像 '; 这样的类别DROP TABLE 用户;。

【讨论】:

  • 上面的脚本应该仍然可以工作,因为它是在假设 parentcategoryid 不是外键的情况下编写的。
  • 我看不到表名是什么。但是,如果您需要根据类别 ID 更新来更新现有表,您将使用 UPDATE 查询; w3schools.com/php/php_mysql_update.asp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多