Bonjour,
Je créer un espace membre pour mon site internet. J'aimerais savoir si il y a une équivalance de mysql_num_row en PDO ?
Merci d'avance pour vos reponses !
Merci mais je ne comprends pas le code (je n'arrive pas à l'insérer). Je suis vraiment débutant en php.
Tu arrives a faire d'autres requetes en PDO, pour ton site ? Si oui, mets-nous un exemple de code qui marche.
ok juste pour me connecter à me base de données
$pdo = new PDO('mysql:host=localhost;dbname=membre', 'root', '');
J'aimerais une fois que la personne c'est inscrit, elle puisse se connecter. Avec une requête $login, chercher dans ma base de données, si le login est bien inscrit dans la base de données, lui afficher son espace membre(je suis pas sur d'avoir été claire).
Je suppose qu'il y a aussi un mot de passe:
Dans ce cas:
$query = "SELECT * FROM users WHERE name = " . $_POST'name'] . " AND pass = " . $_POST'mot_de_passe'];
$res = $pdo->query( $query );
$num_rows = $res->fetchColumn();
A adapter si tu n'as pas de mot de passe, ou si tu hash (j'espère que c'est le cas) ton mot de passe.
Merci beaucoup mais à quoi est du cette erreur ?
Fatal error: Call to a member function fetchColumn() on a non-object in C:\wamp\www\membre2\login.php on line 18
Voila mon code source, il me semble que je l'ai instancier.
$pdo = new PDO('mysql:host=localhost;dbname=membre', 'root', '');
$password = md5($password);
$query = "SELECT * FROM users WHERE login = " . $_POST'pseudo'] . " AND password = " . $_POST'password'];
$res = $pdo->query( $query );
$num_rows = $res->fetchColumn();
Sur la doc PHP, ils utilisent PDO::prepare et PDO::execute.
Ça te permettra aussi de sécuriser ton code !
$pdo = new PDO('mysql:host=localhost;dbname=membre', 'root', '');
$password = md5($_POST'password']);
$query = "SELECT * FROM users WHERE login = ? AND password = ?";
$res = $pdo->prepare( $query );
$res = $pdo->execute(array($_POST'pseudo'], $password));
$num_rows = $res->fetchColumn();
Pour plus d'information :
http://www.php.net/manual/fr/pdostatement.fetchcolumn.php
http://www.php.net/manual/fr/pdo.prepare.php
<?php
$dbh = new PDO(/* ta chaine pour te connecter */);
$stmt = $dbh->prepare("SELECT count(username) FROM users WHERE login = :login AND password = :pwd");
$sth->bindParam(':login', $login, PDO::PARAM_STR);
$sth->bindParam(':pwd', $password, PDO::PARAM_STR);
$stmt->execute();
$nbResults = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($nbResults);
Je trouve cette façon de faire vachement plus élégante, à aucun moment ta base ne renvoie le mot de passe, pour peu que $nbResult[0] = 1 tout roule, dans tous les autres cas tu jettes.
Mais peu importe la solution ne sors JAMAIS un mot de passe de la database, il est bien là où il est...
Tout d'abord, l'équivalence à mysql_num_rows() qui est une fonction dépréciée, est rowCount(). Pour savoir, il suffit de ce rendre sur: www.php.net et de naviguer un peu sur ce site pour trouver tes réponses.
Concernant ton espace membre, il faut effectivement faire une requête similaire à celle que vient de donner Garniture-banner. Cependant, il ne faut pas oublier qu'un mot de passe doit être crypter dans une base de données !!! Il ne faut pas que le mot de passe soit visible clairement dans la base (sauf si tu veux créer des problèmes, et ce sont les utilisateurs qui subissent les conséquences). Tu dois donc crypter le mot de passe à l'inscription, et à la connexion, tu cryptes de nouveaux le champ mot de passe du formulaire de connexion et tu compares ce dernier avec le champ password de ta base de données.