2013-02-13 7 views
0

J'ai deux tables dans une base de données:des mises à jour de script arrête alors pour toutes les autres mises à jour

  • Employee_info (stocke toutes les informations des employés) et

  • Job_Info (magasin tout titre du poste, la description de l'emploi).

Le code insère les données sans problème mais quand la mise à jour cette erreur est imprimé sur le navigateur:

Impossible d'ajouter ou mettre à jour une ligne enfant: une contrainte de clé étrangère échoue (Employee_database.job_info , FOREIGN KEY de CONTRAINTE (employee_id) RÉFÉRENCES Employee_info (employee_id) MISE à JOUR SUR CASCADE)

Je ne peux pas obtenir la valeur de Employee_Id pour la table des enfants à mettre à jour ou quel pourrait être le problème?

Voici ici le code

$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());} 




               } 

est la conception de databse

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

Répondre

0

Le problème est que lorsque la mise à jour de votre employee_id de $ est vide. Voyez-les, vous ne le définissez pas.

Votre code doit être:

$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());} 




              } 
+0

Merci, il travaille pour les mises à jour que ne puis met pas à jour –

+0

completly Que voulez-vous dire qu'il ne met pas à jour complètement? –

0

Oui vous avez besoin pour obtenir le numéro d'employé de la parenttable afin de mettre à jour la table des enfants que vous utilisez dans la déclaration de mise à jour de la table des enfants.

Ajouter cette ligne de code, puis exécuter à nouveau:

$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']; // add this line in your code here 

    ..... 
+0

fonctionne pour seulement quelques insère puis arrête ce qui pourrait être le problème –

+0

il mettra à jour seulement pour ceux emp qui existent dans la table empoyee_info – user2001117