我在数据库中有两个表:
Employee_info
(存储所有员工信息)和Job_Info
(存储所有职位,职位描述)。
代码插入数据没有问题,但更新时浏览器上会打印此错误:
无法添加或更新子行:外键约束失败(Employee_database.job_info,CONSTRAINT job_info_ibfk_4 FOREIGN KEY (Employee_Id) REFERENCES Employee_info (Employee_Id) ON UPDATE CASCADE)
我无法获取Employee_Id
要更新的子表的值,或者可能是什么问题?
这是代码
$query = "SELECT * FROM `Employee_info` WHERE `Name_Of_Employee` = '$Name'";
$sqlsearch = mysql_query($query);
$resultcount = mysql_numrows($sqlsearch);
if ($resultcount > 0)
{
$row=mysql_fetch_assoc ($sqlsearch);
$Employee_Id= $row['Employee_Id'];
mysql_query("UPDATE `employee_info` SET `Name_Of_Employee` = '$Name',
`Physical_Address` = '$P_Address',
`Phone_Number` = '$Phone',
`Email_Address` = '$E_Address'
WHERE `Name_Of_Employee` = '$Name'"
)
or die(mysql_error());
}
else {
$sql="INSERT INTO employee_info
(
Name_Of_Employee,
Physical_Address,
Phone_Number,
Email_Address
)
VALUES (
'$Name',
'$P_Address',
'$Phone',
'$E_Address'
)";
if(!mysql_query($sql))
{
die('cannot store in employee_info'.mysql_error());
}
}
$Employee_Id=mysql_insert_id();
$qry = "SELECT * FROM `Job_info` WHERE `Job_Title` = '$Job_Title'";
$sqlsearch = mysql_query($query);
$resultcount = mysql_numrows($sqlsearch);
if ($resultcount > 0) {
"UPDATE `Job_info` SET `Employee_Id` = '$Employee_Id' ,
`Job_Title` = '$Job_Title',
`Job_Description` = '$Job_Description'
WHERE `Employee_Id` = '$Employee_Id'")
or die(mysql_error());
}
else
{
$sql="INSERT INTO ad_info (
Employee_Id,
Job_Title,
Job_Description
)
VALUES (
'$Employee_Id',
'$Job_Title',
'$Job_Description'
)";
if(!mysql_query($sql))
{
die('cannot store in job info'.mysql_error());}
}
这是数据库设计
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| Employee_Id | int(11) | NO | PRI | NULL | auto_increment |
| Name_Of_Employee | varchar(20) | NO | | | |
| Physical_Address | varchar(25) | NO | | | |
| Phone_Number | int(14) | NO | | | |
| Email_address | varchar(25) | NO | | | | |
+------------------+-------------+------+-----+---------+----------------+
+------------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+----------------+
| jOB_Id | int(11) | NO | PRI | NULL | auto_increment |
| Employee_Id | int(11) | NO | | | |
| Job_Title | varchar(25) | NO | | | |
| Job_Description | text(100) | NO | | | |
+------------------+-------------+------+-----+---------+----------------+