2017-09-07 2 views
0

En dessous du code PersonID est clé primaire dans une table et clé étrangère dans une autre table, j'ai écrit ce code en phpcomment mettre à jour deux table qui a plusieurs colonnes dans la procédure stockée?

$query = mysqli_query($conn,"UPDATE employee SET Firstname = '$fname', Lastname ='$lname', email_id ='$email', Mobile_no ='$mobile', city='$city' WHERE PersonID = '$userid'"); 
$query = mysqli_query($conn,"UPDATE experience SET Company_name = '$com', Location ='$local', Year_Of_Experience ='$year', Description ='$description' WHERE PersonID = '$userid'"); 

Maintenant, je veux écrire ci-dessus code sp quelqu'un a une idée de écrire?

+0

Vous êtes censé essayer de ** écrire le code toi même**. Après [faire plus de recherche] (https://meta.stackoverflow.com/q/261592/1011527) si vous avez un problème ** poster ce que vous avez essayé ** avec une ** explication claire de ce qui n'est pas working ** et fournissent [un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). Lisez [Comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask). Assurez-vous de [faire le tour] (http://stackoverflow.com/tour) et lisez [this] (https://meta.stackoverflow.com/q/347937/1011527). –

+0

https://stackoverflow.com/questions/4278392/beginners-guide-to-stored-procedures-with-mysql –

+0

Si vous utilisez une base de données transactionnelle comme Innodb, vous pouvez utiliser transaction (begin, et commit) – ajreal

Répondre

1

il suffit d'exécuter ce ci-dessous dans votre PHPMyAdmin et l'utiliser

DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    PROCEDURE DATABASE_NAME.`update_sp`(IN PersonID DATATYPE(size),IN Firstname DATATYPE(size), IN Lastname DATATYPE(size), IN email_id DATATYPE(size), IN Mobile_no DATATYPE(size), IN city DATATYPE(size), 
          IN Location DATATYPE(size), IN Year_Of_Experience DATATYPE(size), IN Description DATATYPE(size)) 
    /*LANGUAGE SQL 
    | [NOT] DETERMINISTIC 
    | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 
    | SQL SECURITY { DEFINER | INVOKER } 
    | COMMENT 'string'*/ 
    BEGIN 
     UPDATE employee SET Firstname = REPLACE(Firstname,"'","`"), Lastname =REPLACE(Lastname,"'","`"), email_id =REPLACE(email_id,"'","`"), 
     Mobile_no =REPLACE(Mobile_no,"'","`"), city=REPLACE(city,"'","`") WHERE PersonID = REPLACE(PersonID,"'","`"); 

     UPDATE experience SET Company_name = REPLACE(Company_name,"'","`") , Location =REPLACE(Location,"'","`") , Year_Of_Experience =REPLACE(Year_Of_Experience,"'","`") , 
     Description =REPLACE(Description,"'","`") WHERE PersonID = REPLACE(PersonID,"'","`") ; 
    END$$ 

DELIMITER ; 

Vous pouvez l'appeler comme comme un appel de fonction en passant les arguments ..

+0

son ne fonctionne pas les deux tables ne se met pas à jour – knight007

+0

J'ai le même ID plusieurs fois dans t.2 mais c'est seulement une fois dans t.1. Peut-on faire une mise à jour ??? – knight007

+0

avez-vous changé le SP selon votre base de données et avez-vous besoin? changez le nom de DB, User, puis essayez-le. autrement, cela vous donnera une erreur. –