problème user existe bdd

Par RDZ, il y a 9 ans


Bonjour je suis entrain de coder un logiciel avec system de connexion en vb je vien de créer la bdd je suis entrain de faire le fichier php il arrive bien a se connecter a la bdd mais quand je veux voir si le user existe sa me marque error voici le code

<?php $action = new action; if ($action->userExist("test")) echo "OK"; else echo "error"; class action { public $bdd; public function action () { try { $this->bdd = new PDO('mysql:host=localhost;dbname=', '', ''); } catch (Exception $ex) { die('ERROR:ERROR_BDD_CONNECTION'); } } public function userExist($user) { $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array('$user')); if (empty($data['User'])) return (false); else return (true); } private function executeQuery($query, $args, $fetch = true) { $response = $this->bdd->prepare($query); $response->execute($args); if ($fetch) { $data = $response->fetch(); $response->closeCursor(); return ($data); } else return ($response); }

j'ai effacer les info de connexion pour eviter d'avoir de probleme merci d'avance a se qui seront me dire d'ou vien l'erreur

19 réponses

betaWeb, il y a 9 ans

D'ailleurs, pourquoi ne pas nous donner le détail de l'erreur ? Tu utilises quoi pour débugguer ?

RDZ, il y a 9 ans

ba je le poste sur mon hebergeur et du coup sa maffiche juste erreur et sa devrait afficher OK

RDZ, il y a 9 ans

je regarde un tuto pour faire cela et le mec qui a fait le tuto lui sa marche j'ai tout inspecter le code et tout est comme lui mais lui sa marche mais pas moi

Carouge10, il y a 9 ans

Bonjour,

Il manque les parentèses lors de la création de la classe.

$action = new action();
RDZ, il y a 9 ans

merci pour ta reponse mais je vien de tester sa marque toujours error

Carouge10, il y a 9 ans

Attention à l'utilisation des " et ' qui est différentes.
" permet de d'insérer des variables dans une chaines alors que ' ne le permet pas.

array('$user') != array("$user")
RDZ, il y a 9 ans

je vien de tester j'ai mis

public function userExist($user) { $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array("$user")); if (empty($data['User'])) return (false); else return (true); }

mais toujours error

Carouge10, il y a 9 ans

il vous faut procéder au debuggage ligne par ligne.
que donne un var_dump($data); juste après l'action executeQuery??

Que donnes les logs ?

RDZ, il y a 9 ans

je vien de tester dit moi si c sa

public function userExist($user) { $data = $this->executeQuery ("SELECT * FROM Users WHERE User = ?;", array("$user")); var_dump($data); if (empty($data['User'])) return (false); else return (true); }

le message : bool(false) error

betaWeb, il y a 9 ans

Salut,

Tu es sûr de bien être connecté à ta base de données ?
Aussi, évite d'appeler une méthode de classe de la même façon que la classe elle-même c'est pas super propre ;)
Je pense d'ailleurs qu'il s'agit de ton __construct() et que tu t'es trompé ;)

RDZ, il y a 9 ans

oui je suis bien connecté a la bdd je vais vite fait tout regarde pour voir si je trouve l'erreur

betaWeb, il y a 9 ans

Tu as débug toutes tes variables ? TUu es sûr que tu es bien connecté à ta base de données ?

RDZ, il y a 9 ans

comment je peut voir si je suis bien co a la bdd?

betaWeb, il y a 9 ans
var_dump($this->bdd);
RDZ, il y a 9 ans

voila le message object(PDO)#2 (0) { } error

betaWeb, il y a 9 ans

Ca ne nous en dit pas beaucoup plus .. mais à mon avis la connection à la BDD n'est pas effective, d'autant plus que tu ne renseignes NUL PART le nom de la base de données à laquelle il faut se connecter...

Essaye ceci, et pense à renseigner les infos pour te connecter à ta base de données :

$action = new Action; if ($action->userExist("test")) echo "OK"; else echo "error"; class Action { public $bdd; public function __construct () { try { $this->bdd = new PDO('mysql:host=localhost;dbname=', '', ''); // RENSEIGNE LES INFOS DE CONNEXION ICI !!! } catch (Exception $ex) { die('ERROR:ERROR_BDD_CONNECTION'); } } public function userExist($user) { $data = $this->executeQuery("SELECT * FROM Users WHERE User = ?;", array('$user')); if (empty($data['User'])) return (false); else return (true); } private function executeQuery($query, $args, $fetch = true) { $response = $this->bdd->prepare($query); $response->execute($args); if ($fetch) { $data = $response->fetch(); $response->closeCursor(); return ($data); } else return ($response); }

L'autre GROS souci est que tu as vraisemblablement pompé le code sur un tutoriel sans réellement comprendre ce que tu faisais..

RDZ, il y a 9 ans

de mon coter j'ai bie rentrer les identifient ses juste que je les est pas publier sur le forum sinon je vien de rentrer ton code et toujours erreur

Thomas Chicheportiche, il y a 9 ans

Salut, Quel est le contenu de $data après l'éxecution de ta requête?

SLK, il y a 9 ans

Salut,

J'ai créé une BDD de test pour voir,
et moi j'ai "OK",
pas "error"

je vien de rentrer ton code et toujours erreur

Tu as copié le code de BetaWeb,
mais tu as quand même pensé à rectifier les 2 erreurs mentionnées par Carouge10 n'est-ce pas ?

  • new Action()
  • array("$user")

    ou array($user) tout simplement

j'ai bie rentrer les identifient

On parle bien des 3 informations manquantes ? (nom de la BDD, ton login, ton pass)

Sur PHPMyAdmin,
déconnecte toi et reconnecte toi avec le login et le pass que tu as mis, pour vérifier que ce sont les bons.

Toujours sur PHPMyAdmin tu as bien :

  • Une base de données qui porte le bon nom.
  • Avec une table 'Users'.
  • Dans cette table tu as une insertion qui à la valeur 'test' dans le champ 'User'.

    ?