我正在開發一個系統,可以使用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