Requête SQL WHERE

Bonjour, je voudrais effectuer une requête SQL, j'en ai fait des centaines, mais je ne sais pas trop pourquoi, je n'arrive pas à faire marcher celle là !
Alors voilà ce que j'ai écrit :

$Pseudo = $_SESSION['pseudo'];
$req2=$bdd->query("SELECT * FROM table WHERE Pseudo2 = '.$Pseudo.' OR Pseudo3 = '.$Pseudo.'");

while($donneesUser3 = $req2->fetch())
{
// Bla bla bla
}

Alors je n'ai pas d'erreurs, mais rien ne s'affiche, et en regardant dans mes tables sur PhpAdmin, je vois bien qu'il devrait s'afficher quelque chose...
Voyez-vous une erreur ?
Merci d'avance !

3 réponses

  1. Bonjour,

    A la place de

    $req2=$bdd->query("SELECT * FROM table WHERE Pseudo2 = '.$Pseudo.' OR Pseudo3 = '.$Pseudo.'");


    fais donc un

    echo "SELECT * FROM table WHERE Pseudo2 = '.$Pseudo.' OR Pseudo3 = '.$Pseudo.'";
    die();


    Si tu ne vois pas l'erreur reviens vers nous : )

    cdt
    1. Salut ^^,
      tu as fait une toute petite erreur ;)
      En fait tu entres ta variable $Pseudo directement dans la requête, or tu devrais l'entourer de guillemets, donc ça donnerais quelque chose comme ça :
      $req2=$bdd->query('SELECT * FROM table WHERE Pseudo2 = \''.$Pseudo.'\' OR Pseudo3 = \''.$Pseudo.'\'');
      

      Toutefois, c'est une mauvaise manière de faire, essaye plutôt de faire comme ça (justement pour éviter ce genre d'erreurs) :
      $req2=$bdd->prepare('SELECT * FROM table WHERE Pseudo2 = ? OR Pseudo3 = ?');
      $req2->execute(array($Pseudo, $Pseudo));
      
      1. Salut Actu

        lorsque tu indiques : "essaye plutôt de faire comme ça "

        'SELECT * FROM table WHERE Pseudo2 = ? OR Pseudo3 = ?'


        Tu sélectionneras à chaque requête l'ensemble des enregistrements de ta table 'table', à la condition que les caractères génériques soient acceptés sans l'instruction LIKE ( a vérifier )

        cdt
      2. Pourquoi, les méthodes prepare/execute parse d'elles même ma chaîne de caractère donc ça ne sélectionnera les entrées que si le pseudo 2 ou 3 d'un membre est égal à la variable $pseudo
      3. Autant pour moi, je n'avais point vu le "prepare" ... shame : (