Bonjour à tous ,

je suit actuellement le tuto "gestion espace membre Php" .
Je me retrouve bloqué à 58 minutes de vidéo car la requête préparée que j'essaie de faire me génère une erreur .
j'ai essayé de trouver la solution par moi-même avant de poster sans grand succès malheureusement .
je précise que je suis débutant en Php.

    $req = $pdo->prepare('SELECT * FROM users WHERE mail = :login_mail');
    var_dump($req);
    $req->execute([
      'mail' => $_POST['login_mail']
    ]);
    $user = $req->fetch();

Ce que je veux

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\dev\intranet\php\login.php on line 18
( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp64\www\dev\intranet\php\login.php on line 18
Call Stack

Time Memory Function Location

1 0.0005 364936 {main}( ) ...\login.php:0
2 0.0015 414920 execute( $bound_input_params = ['mail' => 'christophe.b@languedocisolation.fr'] ) ...\login.php:18

6 réponses


Salut, alors dans ta preparation tu fiais un :login_mail et dans ton execution tu passes un mail, déjà le parametre mail est inutile dans la requete, et le parametre login_mail est manquant :)

La ligne 18 elle est au niveau du execute?

Oui , elle est effectivement à la ligne 18.
mail correspond à ma colone dans la bbd qui contient l'addresse mail.
:login_mail correspond à la valeur du input.

okay alors dans ta requete préparée tu ne doit pas mettre la valeur input mais la valeur inconnue de la colonne ;)

$req = $pdo->prepare('SELECT * FROM users WHERE mail = :mail');
var_dump($req);
$req->execute([
    'mail' => $_POST['login_mail']
]);
$user = $req->fetch();

Merci beaucoup, forcement tout de suite cela fonctionne beaucoup mieux :) . Voilà ce qui arrive quand on apprend et "customise" les tuto en même temps.

De rien ;)

Ouai faut un peu de théorie pour comprendre ce qu'on veut faire :p

En gros le :mail dans la requete ça veut dire "je veux placer une valeur dans la colonne mail mais je sais pas encore ce que c'est" ^^

Très bien , encore merci.