0

データベースに2つのテーブルがあり、Employee_info(stores all employee information )コードJob_Info(store all job title , job description)は問題なくデータを挿入しますが、更新時にこのエラーがブラウザに出力されます:

"Cannot add or update a child row: a foreign key constraint fails (Employee_database.job_info, CONSTRAINT job_info_ibfk_4 FOREIGN KEY (Employee_Id) REFERENCES Employee_info (Employee_Id) ON UPDATE CASCADE)".

何が問題なのですか? ここにコードがあります

    $query = "SELECT * FROM `Employee_info` WHERE `Name_Of_Employee` = '$Name'";
      $sqlsearch = mysql_query($query);
         $resultcount = mysql_numrows($sqlsearch);
   if ($resultcount > 0) 
 {
  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

それはまさにあなたのエラーがあなたに伝えていることを意味します。

制約が存在するため、子行を追加または更新できません。これは、更新が制限されているか、キーが存在しないことを意味します。後者の場合は、まず参照先テーブルにそのキーを作成する必要があります。

mysqli_準備済みステートメントに切り替えたり使用したりしない場合PDO、SQL インジェクションに対して脆弱になります。

于 2013-02-06T16:18:20.127 に答える
0

$sqlあなたの声明をエコーし​​ます。99% 確実にエラーが表示されます。テーブルに入れようとしているものと、それが外部キーの制約にどのように関連しているかに明らかにエラーがあります。

IE、あなたの FK は 1 ~ 10 の数字を必要としており、あなたは 11 を入れようとしています。

于 2013-02-06T16:19:10.767 に答える