Tout simplement parce que les accollades ne sont pas autorisées dans les requêtes MySQL. De préférence utilise PDO et pas des mysql_connect et utilise le pattern MVC pour développer ton truc : D
Bonjour,
J'ai un problème dans ma requête, puisque dès que je mets la requête :
rien ne s'affiche!
Et dès que j'enlève ```
WHERE id={$GET["id"]}
<?php if($Auth->user('id')): ?>
<div class="login">
<div class="account" id="account">
<span class="name"><i class="ion-person"></i><?php echo $Auth->user('login'); ?></span>
<i class="ion-chevron-down" id='ico-account'></i>
</div>
<div class="topmenu hide" id="topbar-menu">
<?php if($Auth->user('role') == 'admin'): ?>
<?php
require "./class/config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS)
mysql_select_db(DB_BDD);
$sql="SELECT * FROM users WHERE id={$GET['id']}";
$req = mysql_query($sql) or die ('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
while($data=mysql_fetch_assoc($req)){
echo "<a href=\"./profile.php?id={$data['id']}\"><i class=\"ion-person\"></i> Mon compte</a>";
} ?>
<a href="./admin/index.php"><i class="ion-briefcase"></i> Administration</a>
<a href="./class/logout.php"><i class="ion-power"></i> Se deconnecter</a>
<?php else: ?>
<a href="./profile.php?id=<?php echo $Auth->user('id'); ?>"><i class="ion-person"></i> Mon compte</a>
<a href="./class/logout.php"><i class="ion-power"></i> Se deconnecter</a>
<?php endif; ?>
</div>
</div>
<?php else: ?>
<div class="login">
<a href="connexion.php" class="btn_connect"><i class="ion-power"></i> CONNEXION</a>
</div>
<?php endif; ?>
10 réponses
Ben c'est bizarre, j'ai toujours mis des accollades dans mes requêtes et ça s'est toujours bien passé... (plusieurs fois dans le site que je suis en train de faire).
En fait j'ai l'impression que ma requête n'est pas bonne pour la simple raison que mon URL ne va pas chercher d'id là où je me trouve.
De plus, à un autre endroit je fais :
Et il va me récupérer id du role!! Quand je mets nom, prenom, mail... ça me récupère bien les bonnes infos... comment je peux faire pour que ça me récupère le bon ID ??
PS: je ne connais pas bien du tout PDO
Ok ok reprenons un peu ...
-
Les accolades ne sont pas autorisées dans les requêtes SQL :

- Si cette ligne te renvoie l'ID du rôle bah j'ai envie de dire que c'est ta classe Auth qui est mal codée :D
- Je te recommande vivement de te mettre à PDO c'est plein de failles de sécurité évidentes
- Tout ça semble brouillon quand même ^^
Hum je me trompe surement mais , $GET n'est pas bon c'est $_GET
xD ça me paraissait tellement évident que je ne l'ai pas vu. Mais c'est effectivement ça
Oui en copiant mon code je me suis planté! Mais hélas ça n'a rien résolu! :)
voilà l'erreur affiché :
Erreur SQL !
SELECT * FROM users WHERE id=
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 '' at line 1
Les accolades sont autorisées dans le sens ou tu l'utilises dans une variable php qui va être interprété avant l'exécution de la requête.
Le problème est que ta variable $_GET['id'] est vide.
quand j'arrive au boulot je vous envoi mon fichier Auth!
je ne vois pas comment redefinir id en tant que id et mon role_id en tant que role_id
Ou c'est le debut de mon code qui déconne... quand on est pas développeur c'est compliqué le PHP!! lol
Je ne vois pas trop ce qui te bloques, les autres t'ont dit le soucis, tu peux régler ça facilement, en passant par une variable temporaire :
En sachant que généralement, on fait des vérifications sur ce qu'on obtient en sortie d'un $_GET,.
En fait l'erreur venait en effet de ma class Auth qui ne faisait pas la différence entre l'ID de ma table" role" et celui de "user".
Pour ne pas me prendre la tête, j'ai renomé l'id de mon role en "rid" et voilà problème réglé!
Merci pour vos réponses tout de même! :)