bonsoir à tous,

je suis en train de tout repassé en PDO, mais là je ne comprend pas trop comment m'en sortir

je demande à pdo via mon select de me donner en premier le nombre de résultat retourné et ensuite d'étudier ce résultat.

Mais au lieux de ça, il ne compte pas le nombre de résultat il me retourne bêtement le résultat ce qui me bloque dans mon script.

Je pense que je fais une erreur d'approche avec pdo....

car lors de mon echo en ligne 6 il me retourne ce que contient le résultat de la requéte sql.

pourriez vous m'aider.

Merci d'avance flo

$sql = "SELECT user_password FROM phpbb_users WHERE username='$login' ";
    $req = $DBPDO1 ->query($sql);
    echo $req->fetchColumn();
    echo '</br>';

    if ( $req->fetchColumn() > 0)
        {
            echo $req->fetchColumn();
    echo '</br>';
            while ($d=$req->fetch(PDO::FETCH_OBJ))
                {
                    $hash = $d->id;
                }
        }
    else 
        {
            echo "mauvais identifiants 1";
        }

4 réponses


BenFarhat
Réponse acceptée

essai ca:

$requete = $pdo->prepare('SELECT user_password FROM phpbb_users WHERE username= ? ');
$requete->execute(array($login));
$nombre de resultat = $requete->fetchColumn();
echo (($nombre de resultat>1)?"tu as :".$nombre de resultat." utilisateur(s) qui correspond(ent) à ta requête!":"pas de resultat!");

sinon vérifie en changeant ta requete par un simple " SELECT user_password FROM phpbb_users"

flo3376
Auteur

j'ai essayé cette methode mais j’obtiens 0

$req = $dbh->query($sql);
$result = $req->fetchAll();
echo '<p>Cette requête retourne '.count($result)." enregistrements.</p>\n";
flo3376
Auteur

avec ta requête il me donne le résultat de mon sélect mais pas la quantité. Par contre effectivement si je vire le where j'ai bien le nombre de réponse.

Tant pis je vais faire un count dans la requête sql et je lancerai une seconde requête aprés pour comparer.

A moin que tu connaisse une astuce, mais bon c'est pas trés grave.

Merci

flo3376
Auteur

j'ai pas mal avance mais maintenant c'est le fichier auth qui déraille

et voici l'erreur

Fatal error: Call to a member function query() on a non-object in /homepages/32/d412740872/htdocs/FFS2-2/tools/config/calendrier/auth.php on line 14

extract($_SESSION'Auth']);

                            $sql = "SELECT COUNT(*)from phpbb_users where username = '$login' ";
                            $req = $DBPDO1 ->query($sql);

depuis le départ quand j'ai ce genre de message, soit ma requéte sql est fausse, soit mes variables ne passent pas, mais là je pige pas car cette requéte est utilisé juste avant dans index.php

je remet les élément

auth.php qui lui ne fonctionne pas si appelé via un autre fichier

<?php
define('PROTECTIONINCLUDE', TRUE);
require_once ($_SERVER"DOCUMENT_ROOT"].'/config/bdall.php');
include_once("hash.php");
class Auth{
            static function isLogged()
                {
                    if(isset($_SESSION'Auth']) && isset($_SESSION'Auth']'login']) && isset($_SESSION'Auth']'pass']))
                        {
                            extract($_SESSION'Auth']);

                            $sql = "SELECT COUNT(*)from phpbb_users where username = '$login' ";
                            $req = $DBPDO1 ->query($sql);
                            if ( $req->fetchColumn()==1)
                                    {
                                        $sql = "SELECT user_password from phpbb_users where username = '$login' ";
                                        $req = $DBPDO1 ->query($sql);

                                        while ($d=$req->fetch(PDO::FETCH_OBJ))
                                            {
                                                $hash = $d-> user_password ;
                                            }

                                        if (phpbb_check_hash($pass, $hash))
                                                {
                                                    return true;
                                                }
                                        else 
                                            {
                                                return false;
                                            }
                                    }
                            else 
                                {
                                    return false;
                                }
                        }
                }       
            }
?>

Bon j'ai trouvé le soucis, mais je n'ai pas de solution propre., quand je rentre dans ma class Auth ou ma static function isLogged() mon include db est détruit, bloquée ou..., j'en sais trop rien, tous ce que je sais c'est que si je remet le try catch de connection à pdo dans la static function, celà redemarre.

Quelqu'un peu me dire pourquoi?