Php 如何根据表单中的用户输入在mysql中插入另一个表中的数据字段?
我正在开发一个系统,可以使用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。我的表格的基本布局可以从下面的创建脚本中看到Php 如何根据表单中的用户输入在mysql中插入另一个表中的数据字段?,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我正在开发一个系统,可以使用mysql和php将用户添加到数据库中。 我的表单的基础是管理员可以添加人员类型和人员角色,当用户的详细信息输入表单时,这些类型和角色将应用于用户。例如,如果此系统应用于学校环境,则人员类型可以是教师或厨师,人员角色可以是家长,因为人员类型不排除人员角色。我的系统使用MYISAM类型的表时,外键不会更新,因此该系统存在各种问题,但如果使用INNODB表,数据输入将无法工作。我正在寻找方法,在这段时间内,我可以使用查询来让这个项目像大学项目一样工作,我的最后期限越来越近
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,因此我不能接受它,否则其他人会将该代码视为解决方案。我没有名声说你的评论有用。