Php 如何根据表单中的用户输入在mysql中插入另一个表中的数据字段?

Php 如何根据表单中的用户输入在mysql中插入另一个表中的数据字段?,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我正在开发一个系统,可以使用mysql和php将用户添加到数据库中。 我的表单的基础是管理员可以添加人员类型和人员角色,当用户的详细信息输入表单时,这些类型和角色将应用于用户。例如,如果此系统应用于学校环境,则人员类型可以是教师或厨师,人员角色可以是家长,因为人员类型不排除人员角色。我的系统使用MYISAM类型的表时,外键不会更新,因此该系统存在各种问题,但如果使用INNODB表,数据输入将无法工作。我正在寻找方法,在这段时间内,我可以使用查询来让这个项目像大学项目一样工作,我的最后期限越来越近

我正在开发一个系统,可以使用mysql和php将用户添加到数据库中。 我的表单的基础是管理员可以添加人员类型和人员角色,当用户的详细信息输入表单时,这些类型和角色将应用于用户。例如,如果此系统应用于学校环境,则人员类型可以是教师或厨师,人员角色可以是家长,因为人员类型不排除人员角色。我的系统使用MYISAM类型的表时,外键不会更新,因此该系统存在各种问题,但如果使用INNODB表,数据输入将无法工作。我正在寻找方法,在这段时间内,我可以使用查询来让这个项目像大学项目一样工作,我的最后期限越来越近。不过,我的意思是让这个系统工作起来,所以我会在今年晚些时候设法让它充分发挥作用。 我有用于错误处理的javascript,以及帮助防止sql注入攻击的php代码块

管理员输入用户时,会出现一个下拉菜单,该菜单由人员类型表中的字段填充,这是通过人员类型表中的人员类型\u值\u描述字段完成的。person type表中的每一行都有一个person\u type\u ID。我需要一个查询,可以找到Person\u Type\u Value\u Description,调用Person\u Type\u ID,并将其存储在一个变量中,以便将其解析为Person表中的Person Type ID。我的表格的基本布局可以从下面的创建脚本中看到

CREATE TABLE Person_Type(
Person_Type_ID int auto_increment NOT NULL,
Person_Type_Value_Description varchar(150) NOT NULL,
Create_Date datetime NOT NULL NOT NULL,
Modify_Date datetime NOT NULL  NOT NULL,
Archive char(1) NULL,
CONSTRAINT PK_Person_Type_ID PRIMARY KEY (Person_Type_ID)
 ) ;

编辑

下面是我尝试使用的代码。 我需要存储查询结果,以便通过insert命令将其解析到Person表。谢谢你的评论

我遇到的问题是,由于NOTNULL命令,Person表中的Person\u Type\u ID始终设置为0,但它不会根据我的查询进行更新

// drawing the information from the Person_Type table.
$sql9 = "(SELECT Person_Type_ID
                 FROM Person_Type pt
                WHERE pt.Person_Type_Value_Description =  $Person_Type_Value_Description)";
                $result = @mysql_query($sql9);

//inserting into the person table. **All filed work except for the Person_Type_ID
$qry = "INSERT INTO Person (Person_Type_ID, Create_Date, Modify_Date, First_Name, Surname, DOB, Gender, Allergies, Dietry_Requirements, Disabilities, Medicine_Requirements, username, password) 
   VALUES('$sql9', NOW(), NOW(), '$First_Name', '$Surname', '$DOB', '$Gender', '$Allergies', '$Dietry_Requirements', '$Disabilities', '$Medicine_Requirements', '$username', '$password')" ;
    $result = @mysql_query($qry);
如何调用它以在表单中显示

<?

$persontype = array();

$qry = mysql_query("SELECT Person_Type_Value_Description FROM Person_Type ORDER BY Person_Type_ID");

while($res = mysql_fetch_array($qry)) {
$persontype[$res['Person_Type_Value_Description']] = $res['Person_Type_Value_Description'];
}

?> 


//creates the drop down
<?
function createDropdown($arr, $frm) {
foreach ($arr as $key => $value) {
echo '<option value="'.$value.'">'.$value.'</option>';
}
echo '</select>';
}
?>

//创建下拉列表
然后,管理员将从一个简单的下拉菜单中选择此选项

<td align="right"><div align="left">Person Type* </div></td>           
<td><select name="Person_Type_Value_Description" id="Person_Type_Value_Description">
 <option value="">Select One...</option>
<?php createDropdown($persontype, 'frmpersontype'); ?>
  </select>
      </td>
        </tr> 
人员类型*
选择一个。。。

我想问题就在这里

// drawing the information from the Person_Type table.
$sql9 = "(SELECT Person_Type_ID
             FROM Person_Type pt
            WHERE pt.Person_Type_Value_Description =  $Person_Type_Value_Description)";
$result = @mysql_query($sql9);

//inserting into the person table. **All filed work except for the Person_Type_ID
$qry = "INSERT INTO Person 
    (Person_Type_ID, Create_Date, Modify_Date, First_Name, Surname, DOB, Gender,
     Allergies, Dietry_Requirements, Disabilities, Medicine_Requirements, 
     username,password) 
  VALUES('$sql9', NOW(), NOW(), '$First_Name', '$Surname', '$DOB', '$Gender', 
    '$Allergies', '$Dietry_Requirements', '$Disabilities', '$Medicine_Requirements', 
    '$username', '$password')" ;
$result = @mysql_query($qry);
您正在将实际查询插入$sql9,而不是结果

你需要这样的东西:

$result = @mysql_query($sql9);
$row = mysql_fetch_assoc( $result );
$personTypeID = intval( $row['Person_Type_ID'] );

//inserting into the person table. **All filed work except for the Person_Type_ID
$qry = "INSERT INTO Person 
    (Person_Type_ID, Create_Date, Modify_Date, First_Name, Surname, DOB, Gender,
     Allergies, Dietry_Requirements, Disabilities, Medicine_Requirements, 
     username,password) 
  VALUES($personTypeID etc.

作为补充说明,建议不要再使用mysql_uu函数系列。您应该使用mysqli_uuo或PDO,最好与准备好的语句一起自动转义输入。

我认为问题就在这里

// drawing the information from the Person_Type table.
$sql9 = "(SELECT Person_Type_ID
             FROM Person_Type pt
            WHERE pt.Person_Type_Value_Description =  $Person_Type_Value_Description)";
$result = @mysql_query($sql9);

//inserting into the person table. **All filed work except for the Person_Type_ID
$qry = "INSERT INTO Person 
    (Person_Type_ID, Create_Date, Modify_Date, First_Name, Surname, DOB, Gender,
     Allergies, Dietry_Requirements, Disabilities, Medicine_Requirements, 
     username,password) 
  VALUES('$sql9', NOW(), NOW(), '$First_Name', '$Surname', '$DOB', '$Gender', 
    '$Allergies', '$Dietry_Requirements', '$Disabilities', '$Medicine_Requirements', 
    '$username', '$password')" ;
$result = @mysql_query($qry);
您正在将实际查询插入$sql9,而不是结果

你需要这样的东西:

$result = @mysql_query($sql9);
$row = mysql_fetch_assoc( $result );
$personTypeID = intval( $row['Person_Type_ID'] );

//inserting into the person table. **All filed work except for the Person_Type_ID
$qry = "INSERT INTO Person 
    (Person_Type_ID, Create_Date, Modify_Date, First_Name, Surname, DOB, Gender,
     Allergies, Dietry_Requirements, Disabilities, Medicine_Requirements, 
     username,password) 
  VALUES($personTypeID etc.

作为补充说明,建议不要再使用mysql_uu函数系列。您应该使用mysqli_uuu或PDO,最好使用准备好的语句自动转义输入。

那么您的意思是我们将为您编写完整的表单?请提供不起作用的代码以及有关失败的特定问题。如果您遇到的问题是设置Person_Type_ID,然后,我建议你发布处理设置该字段的代码…@likorvicar,我意识到这些信息没有显示出来,并在你评论时对其进行了编辑。为了更好地理解,我进一步添加了与Person_Type表交互的代码。很抱歉不清楚。那么你的意思是我们将为你编写完整的表单?请提供不起作用的代码以及有关失败的特定问题。如果你遇到的问题是设置Person_Type_ID,那么我建议你发布有关设置该字段的代码…@LiquiorVicar,我意识到此信息未显示,并正在按照您的评论进行编辑。为了更好地理解,我进一步添加了与Person_Type表交互的代码。很抱歉不清楚。我刚刚用echo测试了sql9脚本,您是正确的,它正在通过整个查询。我对php和mysql非常陌生,只是通过教程学习的,但我肯定会研究mysqli_uu和PDO。您的输入非常有用,因为它让我了解了我需要查看的代码区域,并且我理解接受答案。但是结果仍然是在我的数据库中为Person\u Type\u ID发布了一个0,因此我不能接受它,否则其他人会将该代码视为解决方案。我没有名声说你的评论有用。我只是用echo测试了sql9脚本,你是对的,它正在通过整个查询。我对php和mysql非常陌生,只是通过教程学习的,但我肯定会研究mysqli_uu和PDO。您的输入非常有用,因为它让我了解了我需要查看的代码区域,并且我理解接受答案。但是结果仍然是在我的数据库中为Person\u Type\u ID发布了一个0,因此我不能接受它,否则其他人会将该代码视为解决方案。我没有名声说你的评论有用。