2012-12-13 4 views
0

Je voudrais mettre à jour les informations qui sont déjà dans la base de données, mais en utilisant un tableau. Je reçois le message «mettre à jour avec succès» blanc les données dans la base de données n'est pas mis à jour.mise à jour des données dans la base de données mysql en utilisant des tableaux

ce qui suit est la fonction que j'utilise pour faire l'insertion:

function update_knowledge_modules($update_data,$value) 
{ 
    $update = array(); 
    array_walk($update_data,'array_clean'); 

    foreach($update_data as $field=>$data) 
    { 
     $update[] = '.$field. = \''.$data.'\''; 
    } 



    $query = "UPDATE knowledge_modules SET".implode(', ',$update)."WHERE curr_code =$value"; 

    mysql_query($query) 
    or die(mysql_error); 

} 

<?php 

        if(isset($_GET['success']) == true && empty($_GET['success'])==true) 
         { 
          echo 'Changed successfully';  
         } 
        else 
         { 
          if(empty($_POST)== false && empty($errors)== true) 
           { 
            $update_module = array(
            'KM_Number'=>$_POST['KM_Number'], 
            'KM_Title'=>$_POST['KM_Title'], 
            'NQF_Level'=>$_POST['NQF_Level'], 
            'Credits'=>$_POST['Credits'] 


            ); 

            update_knowledge_modules($update_module,$_SESSION['Curr_Code']); 
            header('Location:edit_km_details.php?success'); 
            exit(); 
           } 
         else if(empty($errors)== false) 
          { 
           echo output($errors); 
          } 

       ?> 

      <form action="edit_km_details.php" method="POST"> 
+2

'$ update [] = '. $ Champ. = \ ''. $ data. '\' '; 'affichera le texte" $ field2 "pas le contenu de la variable' $ field', essayez '$ update [] =" $ field =' $ data '"; 'à la place? – Stu

+0

Avez-vous répercuté la requête pour vous assurer qu'elle est correcte? – Mattt

+0

Pouvez-vous publier un exemple de requête finale que vous exécutez. '$ query' –

Répondre

1

Eh bien, tout d'abord, vous restituent la " changé avec succès "message uniquement basé sur $_GET['success'] étant la vérité. Cela n'a rien à voir avec le succès ou l'échec de votre appel de fonction update_knowledge_modules, ce qui semble étrange. En second lieu, je ne vois nulle part où vous établissez réellement une connexion de base de données.

Troisièmement, votre requête est indubitablement formée incorrectement. Regardez ceci:

$update[] = '.$field. = \''.$data.'\''; 

vous allez obtenir une $field littérale et anti-slash dans votre chaîne de requête. Essayez ceci:

$update[] = $field . " = '" . $data . "'"; 

également où vous mettez votre tableau implosé dans la requête finale, vous ne disposez pas d'espaces après SET et avant WHERE.

Chaque fois que vous avez des problèmes avec une requête, juste var_dump il et exécutez-le sur la base de données directement pour voir pourquoi cela ne fonctionne pas et regardez vos erreurs, y compris les erreurs mysql. Enfin, vous ne devriez pas utiliser la famille de fonctions mysql_*. Ils sont obsolètes.

+0

Merci beaucoup les gars !!!! ça fonctionne maintenant – user1783675

0

Essayez: $update[] = $field . " = '" . $data . "'";

Sortie:

Array 
(
    [0] => KM_Number = 'blah' 
) 
Questions connexes