Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai suivi le tuto sur créer son portefolio et je suis tombé sur cette erreur là :
uncaught Error: Cannot access empty property
voici mon code
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $db->quote($_POST['username']);
$password = sha1($_POST['password']);
$select = ("SELECT * FROM usernames WHERE usernames=$username AND password='$password'");
$db->$query;
var_dump($select->rowCount());
var_dump($_POST);
if ($select->rowCount()>0) {
$_SESSION['Auth'] = $select->fetch();
setFlash('Vous êtes maintenant connnecter');
header('location: index.php');
die();
}
}
Bonsoir.
Ton problème doit venir de $db->$query
;
Je pense que tu veux plutôt faire :
$sql = "SELECT * FROM usernames WHERE usernames=$username AND password='$password'";
$select = $db->query($sql);
yes je te remercie ça marche des keur sur toi ^^
ça ma affiché une nouvelle erreur : Uncaught Error: Call to a member function rowCount() on boolean
Bah d'où sort rowCount() ? si c'est pour tester si tu trouve ou pas un user :
if(!empty($select)){
echo 'user connecté';
}
excuse moi de pas avoir répondu depuis 3 mois j'ai eu quelque soucis cid je n'ai pas compris ta question
Salut,
ça ma affiché une nouvelle erreur : Uncaught Error: Call to a member function rowCount() on boolean
C'est juste la requête qui est mal écrite (par rapport aux quotes / double quotes).
Il faut un fetchAll()
aussi.
Et du coup utilise count($truc)
plutôt que $truc->rowCount()
.
$sql = 'SELECT * FROM usernames WHERE usernames = "' . $username . '" AND password = "' . $password . '"';
$select = $db->query($sql);
$response = $select->fetchAll();
var_dump($response);
var_dump(count($response));
Pas vraiment ultra important mais,
ça me perturbe beaucoup que le champ usernames
soit au pluriel plutôt qu'au singulier.
Et que la table s'appelle usernames
plutôt que users
ou members
ou autres...
C'est un peu confus.
voila mon nouveau code mais ca me remarque la même choses "
Fatal error: Uncaught Error: Call to a member function fetchAll() on boolean in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\login.php:36 Stack trace: #0 {main} thrown in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\login.php on line 36"
pourl e champs qui porte quasiment le même nom j'avais fais ca il été tard donc j'été fatigué mais quand je m'en suis rendu compte j'avais de réemmeller les pinceaux si je changeais tout
<?php
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $db->quote($_POST['username']);
$password = sha1($_POST['password']);
$sql = 'SELECT * FROM usernames WHERE usernames = "' . $username . '" AND password = "' . $password . '"';
$select = $db->query($sql);
$response = $select->fetchAll();
var_dump($response);
var_dump(count($response));
/**
$sql = ("SELECT * FROM usernames WHERE usernames=$username AND password='$password'");
$select = $db->query($sql);
var_dump($select->rowCount());
if ($select->rowCount()>0) {
$_SESSION['Auth'] = $select->fetchAll();
setFlash('Vous êtes maintenant connnecter');
header('location: index.php');
}*/
il été tard donc j'été fatigué mais quand je m'en suis rendu compte j'avais de réemmeller les pinceaux si je changeais tout
haha,
oui je vois ^^
moi c'est pareil.
mets des var_dump
sur $username
et $password
,
et vérifie que ce sont les bonnes valeurs en BDD.
$username = $db->quote($_POST['username']);
$password = sha1($_POST['password']);
var_dump($username);
var_dump($password);