Accueil > Forum > > > > plusieurs actions dans une seule requete
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
|
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
|
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
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|