[SQL] Suite de requête en un seul query

Munduss Messages postés 43 Statut Membre -  
Munduss Messages postés 43 Statut Membre -
Bonjour,

Je souhaiterais exécuter une requête depuis une page php, qui renvoit le résultat d'un SELECT, qui en profite pour ajouter une entrée dans une table et qui réaliser l'update d'une autre table.... C'est important que ces actions soient réalisées dans une seule et même mysql_query().

$query="SELECT id 
 FROM users 
 WHERE user='".$login."' AND password='".pass."';

INSERT INTO logtable value(
'blabla',
'blabla',
'blabla');

UPDATE lasttry 
SET at='blabla'";


Si je réalise la requête dans PhpMyAdmin, ça fonctionne très bien. Par contre si j'essais de l'exécuter depuis une page web ça ne fonctionne pas...

db_query fail: 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 etc...' at line x

A voir également:

2 réponses

Giorgiolino Messages postés 270 Statut Contributeur 52
 
Salut,

Si je réalise la requête dans PhpMyAdmin, ça fonctionne très bien

J'avoue que cette affirmation me surprend un peu car je ne vois pas quelle réponse te renvoie phpMyAdmin à ce moment là. Ou alors parce qu'il n'y a pas eu de message d'erreur, tu en as déduit que c'était bon..?

Dans tous les cas, une requête sql (sql statement) - comme son nom l'indique - est UNE. Ce que tu cherches à faire c'est non plus UNE mais PLUSIEURS requêtes dans une même foulée et dans un certain ordre, ça peut être réalisé avec une transaction ou plus simplement, avec une procédure stockée. Je t'invite donc à regarder la doc mysql ad hoc.

Procédures stockées --> http://dev.mysql.com/doc/refman/5.0/fr/stored-procedures.html

Transaction --> http://dev.mysql.com/doc/refman/5.0/fr/commit.html
Concernant les transactions, tu peux t'inspirer de ce tuto du Site du zéro qui utilise la classe PDO
--> http://www.siteduzero.com/tutoriel-3-166641-les-transactions-avec-mysql-et-pdo.html

Eventuellement les déclencheurs --> http://dev.mysql.com/doc/refman/5.0/fr/triggers.html
0
Munduss Messages postés 43 Statut Membre 2
 
Merci Giorgiolino d'avoir pris le temps de me présenter ces deux aspects du SQL. :)

A vrai dire le vrai but est de réaliser une démonstration d'injection pour une formation. Je l'ai présenté autrement pour CCM.

La vrai ligne de code est:
$query="SELECT id 
 FROM users 
 WHERE user='".$login."' AND password='".pass."'";


J'aurais aimer injecter le reste de la suite de requêtes (message originel) dans la variable $pass qui est transmise sans vérification.
Apparemment de ce que j'ai cru comprendre, ce n'est pas possible avec PhpMyAdmin de transmettre plusieurs requêtes SQL avec un seul query...
0