gpt4 book ai didi

php - 如何根据来自表单的用户输入从另一个表插入 mysql 中的数据字段?

转载 作者:行者123 更新时间:2023-11-29 03:43:27 26 4
gpt4 key购买 nike

我正在开发一个可以使用 mysql 和 php 将人员添加到数据库的系统。我的表单的基础是管理员可以添加人员类型和人员角色,当在表单中输入用户的详细信息时,这些将应用于用户。例如,如果将该系统应用于学校环境,则人员类型可以是老师或厨师,人员角色可以是 parent ,因为人员类型不排除人员角色。由于我的系统使用 MYISAM 类型的表,外键没有更新,因此我在使用该系统时遇到了各种问题,但是如果我使用 INNODB 表,我的数据输入将不起作用。我正在寻找方法,在此期间我可以使用查询来使它像大学项目一样工作,而我的最后期限迫在眉睫。然而,我的意思是让这个系统运行起来,所以我会想办法让它在今年晚些时候完全运行起来。我有用于错误处理的 javascript 和用于帮助防止 sql 注入(inject)攻击的 php 代码块。

当管理员输入用户时,会出现一个由人员类型表中的字段填充的下拉菜单,这是由人员类型表中的 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 表。感谢您发表评论。

我遇到的问题是,由于 NOT NULL 命令,Person 表中的 Person_Type_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_ 系列函数。您应该使用 mysqli_ 或 PDO,最好使用准备好的语句来自动转义输入。

关于php - 如何根据来自表单的用户输入从另一个表插入 mysql 中的数据字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com