Problème avec les requêtes

Par Cestmoi, il y a 6 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

J'ai bien recopier le code pour Espace membre refactoring mais je rencontre des problèmes concernant lesrequêtes préparées et les execute:

Register.php

1`<?php
2 require_once 'inc/functions.php';
3 session_start();
4 if(!empty($_POST)){
5
6 $errors = array();
7 require_once 'inc/db.php';
8
9 if(empty($_POST['username']) || !pregmatch('/^[a-zA-Z0-9]+$/', $_POST['username'])){
10 $errors['username'] = "Votre pseudo n'est pas valide (alphanumérique)";
11} else {
12 $req = $pdo->prepare('SELECT id FROM users WHERE username = ?');
13 $req->execute([$_POST['username']]);
14 $user = $req->fetch();
15 if($user){
16 $errors['username'] = 'Ce pseudo est déjà pris';
17 }
18}
19
20 if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
21 $errors['email'] = "Votre email n'est pas valide";
22 } else {
23 $req = $pdo->prepare('SELECT id FROM users WHERE email = ?');
24 $req->execute([$_POST['email']]);
$user = $req->fetch();``

Login.php

8 if(!empty($_POST) && !empty($_POST['username']) && !empty($_POST['password'])){ 9 require_once 'inc/db.php'; 10 $req = $pdo->prepare('SELECT *** FROM users WHERE (username = :username OR email = :username) AND confirmed_at IS NOT NULL'); ****11 $req->execute(['username' => $_POST['username']]); 12 $user = $req->fetch(); 13 if(password_verify($_POST['password'], $user->password)){ 14 $_SESSION['auth'] = $user; 15 $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté'; 16 if($_POST['remember']){ 17 $remember_token = str_random(250); ****18 $pdo->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]); 19 setcookie('remember', $user->id . '==' . $remember_token . sha 20($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 7); Après plusieurs modifications, j'ai donc repris le code source tel quel mais à chaque fichier j'ai les mêmes erreurs: Register.php: erreur à la ligne 13 et 24 (requêteexecute) Dans Login.php c'est ligne 11 (erreur requête execute et à la ligne 18 requête préparée!Dans les fichiers functions.php ligne 35, fichier account.php ligne12 (requête préparée) Fichier confirm.php ligne 6 et 11 fichier forget lignes 6 et 11 et fichier reset.php lignes 6 et 12 qui on toutes trait à requêtes execute et préparée. Je ne vois pas où est l'erreur! Merci d'avance

5 réponses

Carouge10, il y a 6 ans

bonjour,
et quel est cette erreur ?

Cestmoi, il y a 6 ans

Voici:
Warning: PDOStatement::execute() expects at most 1 parameter, 6 given in C:\wamp64\www\Membres\register.php on line 40
$req->execute($_Post['Nom'],$_Post['Prenom'],$_POST['username'], $password, $_POST['email'], $token);

Call Stack

SteveLH, il y a 6 ans

Salut,
La fonction execute ne prend qu'un seul paramètre qui est un tableau.
Voici coment tu dois utiliser ta fonction execute dans ce cas:
$req->execute(array($_Post['Nom'],$_Post['Prenom'],$_POST['username'], $password, $_POST['email'], $token ));

Tu trouveras plus d'informations à ce sujet sur [https://www.php.net/manual/fr/pdostatement.execute.php]()

Carouge10, il y a 6 ans

Donc tu as une erreur dans ta requête associé a ce execute
Il nous faudrait cette requête.
On pourrait avoir les lignes 26 à 40 de register ?

pelwein, il y a 6 ans

ça a l'air bien pourtant... Si tu regardes liteblue la source générée, ça a le bon format