begin process at 2012 05 31 04:46:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

plusieurs actions dans une seule requete


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

plusieurs actions dans une seule requete

dimanche 21 novembre 2010 à 11:41:38 | plusieurs actions dans une seule requete

gabyte

Bonjour,

Je veux faire plusieurs actions en une seule requête. Si je passe par MySql (pour tester), cela fonctionne :

---dans MyQsl----------

TRUNCATE TABLE `VIRTUEL`;
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc1` FROM `SOURCE` WHERE `s_mc1`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc2` FROM `SOURCE` WHERE `s_mc2`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc3` FROM `SOURCE` WHERE `s_mc3`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc4` FROM `SOURCE` WHERE `s_mc4`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc5` FROM `SOURCE` WHERE `s_mc5`!=''
----------------------------

Mais lorsque je fais une requête dans php -

----- dans php ----------

mysql_select_db($base, $fichier);
$query_Rch =
"TRUNCATE TABLE VIRTUEL;INSERT INTO VIRTUEL(id_virtuel,motclef) SELECT s_id, s_mc1 FROM SOURCE WHERE s_mc1!='';INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc2` FROM `SOURCE` WHERE `s_mc2`!='';INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc3` FROM `SOURCE` WHERE `s_mc3`!='';INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc4` FROM `SOURCE` WHERE `s_mc4`!='';INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc5` FROM `SOURCE` WHERE `s_mc5`!=''";

$Rch = mysql_query($query_Rch, $MUL) or die(mysql_error());
$row_Rch = mysql_fetch_assoc($Rch);
$totalRows_Rch = mysql_num_rows($Rch);

------------

et bien ça ne fonctionne plus :

you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO VIRTUEL(id_virtuel,motclef) SELECT s_id, s_mc1 FROM SOURCE WHERE s_m' at line 1

Auriez-vous une idée?

Gabyte - Angers
------------------
dimanche 21 novembre 2010 à 12:02:15 | Re : plusieurs actions dans une seule requete

cod57

BONJOUR
essaye voir ça

----- dans php ----------

mysql_select_db($base, $fichier);
$query_Rch =
"
TRUNCATE TABLE `VIRTUEL`;
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc1` FROM `SOURCE` WHERE `s_mc1`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc2` FROM `SOURCE` WHERE `s_mc2`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc3` FROM `SOURCE` WHERE `s_mc3`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc4` FROM `SOURCE` WHERE `s_mc4`!='';
INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc5` FROM `SOURCE` WHERE `s_mc5`!=''
";

$Rch = mysql_query($query_Rch, $MUL) or die(mysql_error());
$row_Rch = mysql_fetch_assoc($Rch);
$totalRows_Rch = mysql_num_rows($Rch);

a++
dimanche 21 novembre 2010 à 12:32:40 | Re : plusieurs actions dans une seule requete

kohntark

Membre Club
Salut,

Premières lignes de la documentation de mysql_query :

mysql_query() envoie une seule requête (les requêtes multiples ne sont pas supportées) à la base de données courante



Cordialement,


Kohntark -
dimanche 21 novembre 2010 à 12:55:32 | Re : plusieurs actions dans une seule requete

gabyte


Je me doutais un peu qu'une seule requête ne soit la règle

Avez-vous une idée du contournement de cette limite?

j'ai trouvé cela tout à l'heure sur le forum :
------- début -------
$sql = "INSERT INTO membres (pseudo,pass,email,nom,prenom,ville,dtnaissance,avatar,siteweb,aim,mmsn)
VALUES('$pseudo','$pass','$email','$nom','$prenom','$ville','$dtnaissance','$avatar','$siteweb','$aim','$mmsn')";

mysql_query($sql);

$sql = "INSERT INTO chat (pseudo) VALUES('$pseudo')";

mysql_query($sql);
-------- fin ----------
croyez-vous que je puisse faire cela du type :

----début exemple ------

$sql = "TRUNCATE TABLE `VIRTUEL`";

mysql_query($sql);

$sql = "INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc1` FROM `SOURCE` WHERE `s_mc1`!=''";

mysql_query($sql);

$sql = "INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc2` FROM `SOURCE` WHERE `s_mc2`!=''";

mysql_query($sql);

$sql = "INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc3` FROM `SOURCE` WHERE `s_mc3`!=''";

mysql_query($sql);

$sql = "INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc4` FROM `SOURCE` WHERE `s_mc4`!=''";

mysql_query($sql);

$sql = "INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc5` FROM `SOURCE` WHERE `s_mc5`!=''";

mysql_query($sql);


Gabyte - Angers
------------------
dimanche 21 novembre 2010 à 13:24:08 | Re : plusieurs actions dans une seule requete

kohntark

Membre Club
Je réponds vite fait, je dois partir.

Pour commencer abandonne les fonctions mysql_*() qui sont obsolètes, dirige toi plutôt vers mysqli*(), ou mieux, PDO.
Ca ne changera pas des masses la donne concernant ton "problème" (qui n'en est pas un)

A vue de nez, oui, tu peux procéder ainsi, mais pour plus de facilité de lecture et donc de simplicité tu pourrai grouper tes requêtes dans un tableau et faire un foreach dessus :

$aReqSQL = array(
'TRUNCATE TABLE `VIRTUEL`',
'NSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc1` FROM `SOURCE` WHERE `s_mc1`!=\'\'',
[...]
);

foreach($aReqSQL as $req) {
mysql_query($req);
}


C'est juste pour poser l'idée, ça ne tiens pas compte de ce que je disais avant, de la gestion des erreurs, de la sécurité, ...

Cordialement,

Kohntark -
dimanche 21 novembre 2010 à 14:28:28 | Re : plusieurs actions dans une seule requete

neigedhiver

Salut,

Ca change quand même que PDO est capable d'envoyer plusieurs requêtes et retourne les résultats des requêtes dans un ResultSet, chaque résultat étant accessible séparément.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
dimanche 21 novembre 2010 à 17:54:54 | Re : plusieurs actions dans une seule requete

gabyte


et bien j'ai donc trouvé la méthode et appris pas mal de choses merci donc
Voici ce qui fonctionne :
--------- début ---------------

mysql_select_db($mabase, $fichier);

$aReqSQL = array(
'TRUNCATE TABLE `VIRTUEL`',
'INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc1` FROM `SOURCE` WHERE `s_mc1`!=\'\'',
'INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc2` FROM `SOURCE` WHERE `s_mc2`!=\'\'',
'INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc3` FROM `SOURCE` WHERE `s_mc3`!=\'\'',
'INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc4` FROM `SOURCE` WHERE `s_mc4`!=\'\'',
'INSERT INTO VIRTUEL(`id_virtuel`,`motclef`) SELECT `s_id`,`s_mc5` FROM `SOURCE` WHERE `s_mc5`!=\'\'');

foreach($aReqSQL as $req) {
$Rch = mysql_query($req, $fichier) or die(mysql_error());
$row_Rch = mysql_fetch_assoc($Rch);
$totalRows_Rch = mysql_num_rows($Rch);
}

---------- fin -------------
merci donc chers comparses
Gabyte - Angers
------------------
lundi 22 novembre 2010 à 08:01:01 | Re : plusieurs actions dans une seule requete

syndrael

Mysqli peut faire des requetes multiples. A trouver dans la doc (genre multi_query).
après est-ce vraiment utile quand on peut appeler les requetes les unes après les autres..
S.
lundi 22 novembre 2010 à 09:37:28 | Re : plusieurs actions dans une seule requete

neigedhiver


En fait la question est : est-ce vraiment utile quand 5 requêtes pourraient s'écrire en une seule ?

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)


Cette discussion est classée dans : insert, select, id, virtuel, into


Répondre à ce message

Sujets en rapport avec ce message

Mysql_insert_id() -> Problme -> A l'aide [ par Samiby ] J'ai une fonction d'exécution de requêtes avec déconnexion automatique (pour faire une connexion la moins lonque possible).function query_db($query) afficher la valeur d'une table dans un menu select [ par inconnue ] Bonjour, j'affiche un menu select dynamiquement constitué par des valeurs dans une table,dans ma page de modification des données, je souhaiterai donc recuperer l'id d'un INSERT ? [ par Joez ] Bonjour, voila je veux recuperer l'id de l'occurence que je viens d'ajouter dans une table mysql par la commander INSERTest ce possible ?mysql_query(" insert into [ par ptifennec ] Bonjour, j' affiche 3 liste_box où je demande à l'utilisateur de rentrer 3 mots clés... ces derniers sont réferencés dans une base de données d'une ta Insert into de (censure) [ par galldup ] Salut,Pourquoi ma requete excécuté sous PHP 4.3.6 vers SQL SERVER 2000 ne marche pô ?//Connection...//Selection de la base...//Lancer la requete !$que ma rqte ne s'execute [ par alonsyl ] salut,j'utilise le tandem "php-access".les requetes suivantes ne fonctionnent pas:$intitule = addSlashes($intitule);$observations = addSlashes($observ problème avec tablo et balise select dynamique [ par lookoom ] salutj'me casse les dents sur un script et j'viens chercher un peu d'aide !!j'ai un tablo avec une colonne contenant des "select" pour choisir le nomb bonjour j'ai un probleme avec un INSERT INTO [ par timolerigolo ] Bonjour,Voila j'ai une page d'inscription avec 2 INSERT INTO et je voudrais alimanté 2 requéte SQL mé le problème cé que sa alimante que une seule req REQUETE DE TRI [ORDER BY] [ par ] Bonjour !Je souhaiterais pouvoir classer mes données selon 3 critères : par nom de fiche, par date ou par thème.Les requêtes seules fonctionnent (quan Requete MySQL [ par vbguigui ] Voici ma requete :$requete="INSERT INTO tablemessages VALUES('$contenu')";quand mon contenu est "test" alors ca marche : "INSERT INTO tablemessages VA


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales