我正在开发一个系统,可以使用mysql和php将人员添加到数据库中。 我的表单的基础是管理员可以添加人员类型和人员角色,并且当他们的详细信息输入到表单中时,这些应用于用户。例如,如果将此系统应用于学校环境,则人员类型可以是教师或厨师,并且人员角色可以是父级,因为人员类型不排除人员角色。我有这个系统的各种问题,因为外键不会更新,因为我的系统使用MYISAM类型表,但是如果我使用INNODB表,我的数据输入将不起作用。我正在寻求一种方法,让我可以在此期间使用查询来像大学项目一样工作,我的截止日期即将到来。然而,我的意思是让这个系统正常工作,所以会在今年晚些时候设法让它充分发挥作用。 我有JavaScript的错误处理的地方,和PHP代码块,以帮助防止SQL注入攻击。如何根据表单中的用户输入从另一个表中插入数据字段?
当管理员输入用户,有一个下拉这是由人型表中的字段填入菜单,这是由人型表Person_Type_Value_Description场进行。人员类型表中的每一行都有一个Person_Type_ID。我需要一个能够找到Person_Type_Value_Description的查询,请致电Person_Type_ID并将其存储在一个变量中,以便可以将其解析到人员表中的人员类型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)
) ;
...
CREATE TABLE Person(
Person_ID int auto_increment NOT NULL,
Person_Type_ID int NOT NULL,
Create_Date datetime NOT NULL ,
Modify_Date datetime NOT NULL ,
First_Name varchar(50) NOT NULL,
Surname varchar(50) NOT NULL,
DOB date NOT NULL,
Gender char(1) NOT NULL CHECK (Gender ='f' OR Gender ='m'),
Archive char(1) NULL,
Allergies varchar(200) NOT NULL,
Dietry_Requirements varchar(200) NOT NULL,
Disabilities varchar(200) NOT NULL,
Medicine_Requirements varchar(200) NOT NULL,
username varchar (30) NOT NULL,
password varchar (30) NOT NULL,
CONSTRAINT PK_Person_ID PRIMARY KEY (Person_ID),
CONSTRAINT FK_Person_Type_ID FOREIGN KEY (Person_Type_ID)
REFERENCES Person_Type (Person_Type_ID)) ;
编辑
下面是我试图获得工作的代码。 我需要存储查询的结果,所以我可以通过插入命令将它解析到Person表。感谢您的评论。
我遇到的问题是Person表中的Person_Type_ID始终设置为0,因为NOT NULL命令,但它不基于我的查询更新。
// 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>
所以你的意思是我们会为你写完整的表格? – hjpotter92 2012-04-16 11:01:59
请提供不符合关于失败的特定问题的代码。 – 2012-04-16 11:11:59
如果您遇到的问题是在设置Person_Type_ID,那么我建议您发布处理设置该字段的代码... – liquorvicar 2012-04-16 12:05:00