Variable php dans requete sql

Résolu/Fermé
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 - Modifié par Helloween77 le 1/03/2012 à 15:22
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 - 7 mars 2012 à 14:07
Bonjour,

La requête suivante marche impec quand je test en local, elle me retourne bien ce que je lui demande... Mais une fois mise en ligne la requête ne s'exécute pas correctement ("erreur"). J'en déduis que ça doit être à cause de la variable $pseudo mais j'ai essayé différentes syntaxes et ça ne marche toujours pas :

$pseudo=$_SESSION['pseudo'];
$result=mysql_query("SELECT id,titre FROM FICHES F WHERE F.pseudo= '$pseudo' ORDER BY id desc LIMIT 0,200") or die ('erreur');


Ca fait longtemps que je cherche mais rien à faire, merci d'avance à ceux qui pourrons m'éclairer.
A voir également:

4 réponses

Tatanos Messages postés 966 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 26 mai 2016 156
1 mars 2012 à 15:31
Bonjour :)

$result=mysql_query("SELECT id,titre FROM FICHES F WHERE F.pseudo= ' " . $pseudo . " ' ORDER BY id desc LIMIT 0,200") or die ('erreur');

J'ai volontairement mi plein d'espaces pour qu'on distingue bien les " et les '
1
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 1
1 mars 2012 à 16:54
Bonjour,

Merci mais ça ne marche pas non plus =S
0
yelem Messages postés 74 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 3 juin 2014 23
1 mars 2012 à 18:24
Bonjour,

Bon tout d'abord, tu as oublié de mettre '. .' autour de ta variable pour qu'elle puisse être reconnue en tant que telle.

Ensuite, as tu essayé avec une requête préparée ?? En général il est grandement conseillé d'éviter de concaténer une variable dans une requête pour des raisons de sécurités évidentes (injection SQL) mais aussi (plus rare) pour des problèmes de compatibilité.

Ecrit plutôt quelque chose du genre :

<?php

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

$req = $bdd->prepare("SELECT id, titre FROM FICHES WHERE F.pseudo = ? ORDER BY id desc LIMIT 0,200");
$req->execute(array($pseudo']));

catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
?>
0
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 1
7 mars 2012 à 14:07
Bonjour, non je n'ai rien oublié il fallait juste écrire le nom de la table en minuscule, merci ;)
0