Bonjour à tous,

J'essaie de récuperer le contenu d'une requête sql dans une variable mais impossible de l'avoir.

Voici mon code :

  $req = $dbh->prepare("SELECT email FROM utilisateur WHERE email = :sub_email;");
                $req->execute(array(":sub_email" => $_POST['sub_email']));
                $result = $req->fetch();
                echo $result;

Le tuto graphikart fait exactement la même chose et n'ont aucuns problèmes ;)

17 réponses


AlphA
Auteur
Réponse acceptée

c'est bon j'ai finalement réussi après tant de temps... trop de temps pour un rien encore une fois X)
Voilà le code fonctionnel :

$req = $dbh->prepare("SELECT email FROM utilisateur WHERE email = :sub_email");
                $req->execute(array(":sub_email" => $_POST['sub_email']));
                $_POST['is_email_used'] = $req->fetch();
                echo $_POST['is_email_used']['email'];

Salut @Alpha,

PDO te retourne le résultat sous forme d'array ou d'objet, il faut utiliser la fonction var_dump() de PHP et non echo, qui est réservé pour les types primitifs type string ou int.

Dans ton cas il faut faire echo $result['email'] ou echo $result->email (tout dépend des paramètres d'instanciation de PDO, et connaissant @Grafikart, ça sera la deuxième solution).

AlphA
Auteur

Du coup ça ne m'affiche absolument plus rien. COmme si ma requête ne renvoyait aucun résultat. Pourtant j'ai testé la requête dans la bdd et j'obtient bien un résultat.

Si tu suis un tuto ou une formation, je t'invite à relire ton code en fonction et, le cas échéant, de reprendre la formation depuis le début. Es-tu sûr que la connexion à la BD est bien effectuée ? Tu n'as pas d'erreurs PHP ?

AlphA
Auteur

Non pas d'erreur php, la connexion est impec' puisque d'autres requêtes fonctionnent. Je suis le tuto mais j'ai l'impression que des bouts de codes ne sont pas donnés. EN tout cas les parties présentées devraient normalement être suffisante. Je sais vraiment pas pourquoi...

Et c'est quel(s) tuto(s) d'ailleurs ? Car tu ne l'as pas précisé..

AlphA
Auteur

http://www.grafikart.fr/tutoriels/php/gestion-membre-229
Peut être les caractères de l'adresse mail posent problèmes ?

EDIT: ce doit être la requête qui ne fonctionne pas... Mais que faire :/

Non, simplement que l'email ne doit pas exister en base tout simplement. Ou alors essaye avec un LIKE "SELECT email FROM utilisateur WHERE email LIKE %:sub_email%;"

A quel moment du tuto est-ce qu'il implémente cette partie ? Parce qu'il fait presque 2h quand même..

AlphA
Auteur

C'est pas vraiment dans le tuto ça, je remplace la verification de l'aim par un mail avec cette requête qui check si l'email est existente ou non. Pour que l'utilisateur ne puisse pas creer de compte avec une email déjà existente. Du coup il me faut recuperer dans la BDD si l'email existe.

Et l'email est bien présente dans la bdd, c'est testé via mysql dans le terminal. D'ailleurs la requête marche très bien.

EDIT: toujours rien avec LIKE

Beh à ce moment là, pourquoi tu récupères le champ email ? Tu récupères le champ id c'est suffisant. Et je suis sur que ça marchera.
Et donc ça n'avait rien a voir avec le tuto de @Grafikart puisque tu me dis toi-même que tu as implémenté cette partie.

AlphA
Auteur

Oui mais dans son tuto il utilise la même methode de recuperation de donné pour une requête : exemple :

$req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();

Quel rapport avec ce que je viens de te dire ? ^^

AlphA
Auteur

Le rapport avec le tuto de grafikart.

Non je te parle du rapport avec le fait qu'il vaut mieux sélectionner l'id plutôt que le mail ?

AlphA
Auteur

Aucun, j'ai volontairement choisi de répondre qu'à une seule partie de votre message :)

On peut se tutoyer je ne suis pas si vieux ;)
Beh tant pis j'essayais juste de te donner des conseils.

AlphA
Auteur

Mais c'est une remarque que j'ai bien prise en compte, merci de vos réponses et de votre temps.