0

データベースに2つのテーブルがあります。

  • 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   |     |         |                |
+------------------+-------------+------+-----+---------+----------------+
4

2 に答える 2

0

問題は、更新時に $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());}




                                             }
于 2013-02-13T06:59:10.907 に答える