我創建了一個允許用戶註冊參與者的用戶表單。此用戶表單中的一個字段是一個下拉列表,要求用戶選擇一個事件ID。 事件ID是一個外鍵,下拉列表中列出的值是從事件表生成的。這意味着用戶無法選擇除已生成的事件ID以外的其他任何內容。爲什麼我的數據庫不接受用戶表單中的外鍵?
當我提出這個用戶的形式,我得到了以下錯誤:
Failed. Cannot add or update a child row: a foreign key constraint fails
我知道這個錯誤信息通常意味着我在嘗試輸入一個值,不存在一個外鍵字段,但回落eventID的下拉列表是從事件表中生成的,這意味着它只顯示已註冊並存在的eventIds。 誰能告訴我問題是什麼?
任何幫助將不勝感激。
<!DOCTYPE html>
<?php
$link=mysqli_connect("localhost","root","");
mysqli_select_db($link,"event_planner");
?>
<html>
<head>
<title>Participant's Registration Page</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body
<div id="form">
<form action="partregisterprocess.php" method="POST">
<h1 align="center">Participant's Registration Page</h1>
<p>
Name:<br />
<input type="text" id="name" name="name" required />
</p>
<p>
Surname:<br />
<input type="text" id="surname" name="surname" required />
</p>
<p>
Date of Birth:<br />
<input type="date" id="dob" name="dob" required />
</p>
<p>
Age at Camp:<br />
<input type="text" id="age" name="age" required />
</p>
<p>
Gender:<br />
Male<input type="radio" value="male" name="gender" />
Female<input type="radio" value="female" name="gender" required />
</p>
<p>
Address:<br />
<input type="text" id="address" name="address" required />
</p>
<p>
Contact No:<br />
<input type="text" id="contact" name="contact" required />
</p>
<p>
Next of Kin:<br />
<input type="text" id="nextkin" name="nextkin" required />
</p>
<p>
Next of Kin's Contact No:<br />
<input type="text" id="nextContact" name="nextContact" required />
</p>
<p>
Attendance at Camp:<br />
<input type="text" id="attendcamp" name="attendcamp" required />
</p>
<p>
Attendance at Sunday School:<br />
<input type="text" id="attendschool" name="attendschool" required />
</p>
<p>
Comments:<br />
<input type="text" id="comments" name="comments" />
</p>
<p>
<input type="submit" id="btn" value="Register" />
</p>
<label> EventID </label>
<id="eventID" name="eventID" />
<select>
<?php
$res=mysqli_query($link,"SELECT * FROM events");
while($row=mysqli_fetch_array($res))
{
?>
E<option><?php echo $row["eventID"]; ?></option>
<?php
}
?>
</select>
</form>
</div>
</body>
</html>
<?php
$Name = $_POST['name'];
$Surname = $_POST['surname'];
$Date_of_Birth = $_POST['dob'];
$Age_at_Camp = $_POST['age'];
$Gender = $_POST['gender'];
$Address = $_POST['address'];
$Contact_No = $_POST['contact'];
$Next_of_Kin = $_POST['nextkin'];
$Kin_ContactNo = $_POST['nextContact'];
$Attendance_Camp = $_POST['attendcamp'];
$Attendance_School = $_POST['attendschool'];
$Comments = $_POST['comments'];
$eventID = $_POST['eventID'];
mysqli_connect("localhost", "root", "");
mysqli_select_db("event_planner");
$insert= mysqli_query("INSERT INTO participants VALUES ('','$Name','$Surname','$Date_of_Birth','$Age_at_Camp','$Gender','$Address','$Contact_No','$Next_of_Kin','$Kin_ContactNo','$Attendance_Camp','$Attendance_School','$Comments','$eventID')")
or die("Failed. ".mysqli_error());
?>
該錯誤表示您試圖插入與外鍵不匹配的值。所以...你想要插入什麼值?什麼是有效值? – David
目前在事件表中註冊了兩個事件,這些EventID是1和2,這正是下拉列表生成的。 但是,當我提交此用戶表單時,出現上述錯誤。 –
這並沒有回答你試圖插入到表中的值的問題。您目前正在假設無論您編寫的任何代碼*必須完美無缺,並且無需檢查或調試它。這個假設是錯誤的。 – David