Php requete mysql avec variable sql

Fermé
nordiste - 8 oct. 2009 à 21:14
 nordiste - 9 oct. 2009 à 00:05
Bonjour,
je cherche a inverser une valeur de 2 éléments dans la base de donnée.
a savoir une colonne position qui va donner l'ordre d'affichage des objets.
mon probleme est que cette requete fonctionne directement dans mysql mais pas avec PHP.

$numero = mysql_real_escape_string($_GET['id']);
$requete = "SET @t1= (select `position` from site_article where `id` = '$numero');
update site_article set `position` = @t1 where `position` = @t1 - 1;
update site_article set `position` = @t1 + 1 where `id` = '$numero';";
$resultat = mysql_query ($requete) or die(mysql_error());

donc soit on trouve une autre requete (imbriquee ?) ou je dois le faire en 3 requetes, et recuperer la réponse en PHP (ce qui me semble lourd...).
A voir également:

5 réponses

au fait voici l'erreur :
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 'update site_article set `position` = @t1 where `position` = @t1 - 1; update' at line 2
1
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
8 oct. 2009 à 21:50
mysql_query() n'accepte pas les requetes multiples, voilà où est l'erreur.

Donc oui, 3 requêtes, l'utilisation d'une variable mysql devient dont caduque.
0
ok,
est-il possible d'imbriquer ce genre de requete ?
merci
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
8 oct. 2009 à 22:25
Non.

Mais quel en serait vraiment l'intérêt ?
Surtout que les requêtes update sont des requêtes très légères. ;)

En plus, j'imagine que ce script est pour un panel admin, donc utilisé peu fréquemment, cherche plutôt à bien indexer tes tables et optimiser les plus lourdes de tes requêtes select, et aussi utiliser éventuellement un système de cache pour ton site, c'est sur ces facteurs que l'on gagne beaucoup de performances. :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ok, un grand merci pour les infos.
marc
0