CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Problème rowCount()

Roycewick54
Roycewick54
Niveau 7
31 mars 2015 à 09:27:04

Bonjour à tous,

J'essaie de faire un module de connexion et d'inscription. La seule chose que j'ai un peu de mal à faire c'est vérifier si le pseudo existe déjà.

J'ai essayé avec rowCount() mais cela ne fonctionne pas car cest une requête Select que j'utilise.

Je me suis donc rabattu sur un fetchColumn() avec un count(*) dans ma requête mais je ne comprends pas bien le principe de cette fonction.

Pouvez-vous m'expliquer s'il vous plait ?

Cordialement,
Royce'

samledev
samledev
Niveau 4
31 mars 2015 à 10:32:43

Hello mister!

Pour interagir avec la base de données tu utilises les fonctions mysql_* ou PDO ?

Cordialement,

Roycewick54
Roycewick54
Niveau 7
31 mars 2015 à 13:27:37

J'utilise les fonctions PDO.

samledev
samledev
Niveau 4
31 mars 2015 à 13:49:33

Au vu de rowCount et fetchColumn j'avais deviné, mais juste être certain que tu savais toi aussi.

rowCount à ne pas utiliser (écrit dans la doc pour ton contexte). Vaut mieux utiliser des solutions comme COUNT + fetchColumn L'idée général doit être de compter combien de personne à ce pseudo:

Exemple :
// ... $count = $dbh->prepare('SELECT COUNT(*) FROM utilisateurs WHERE login = :login'); $count->bindValue('login', $_POST['login'], PDO::PARAM_STR); $count->execute(); if ($count->fetchColumn()) { echo 'Cet identifiant est déjà utilisé'; } else { echo 'ok';

Message édité le 31 mars 2015 à 13:50:07 par samledev
Roycewick54
Roycewick54
Niveau 7
31 mars 2015 à 16:59:54

D'accord merci mais pourquoi Column ?
Cest le fait que l'on utilise des colonnes que je ne comprends pas

Chocolayte
Chocolayte
Niveau 73
31 mars 2015 à 17:41:03

Pourquoi préférer

$count = $dbh->prepare('SELECT COUNT(*) FROM utilisateurs WHERE login = :login');
$count->bindValue('login', $log, PDO::PARAM_STR);
$count->execute();

à

$count = $dbh->query('SELECT COUNT(*) FROM utilisateurs WHERE login = '.$log);

?

Juste pour prendre les bonnes habitudes car la première méthode est plus claire en cas de nombreux paramètres ?

deepblue
deepblue
Niveau 16
31 mars 2015 à 19:10:16

La seconde méthode admet une faille de sécurité (injection SQL).

Si $log vaut 1 ou 1=1 alors requête seré exécutée telle quel : SELECT COUNT(*) FROM utilisateurs WHERE login =1 and 1=0. J'ai donc modifié le comporte de ta requête et je pourrai m'inscrire en un pseudo doublon car le résultat de count() sera toujours = à 0.

samledev
samledev
Niveau 4
31 mars 2015 à 22:31:52

Si nous prenons ta solution Chocolayte, celle-ci va fonctionné seulement si il y a qu'un seul pseudo dans la base de données. Donc si:

  1. 1. Barby
  2. 2. Josée
  3. 3. Stéphane
  4. 4. Louis sont inscrit, Barby, Josée et Stéphane pourront être doublé :)
samledev
samledev
Niveau 4
31 mars 2015 à 22:48:14

Le 31 mars 2015 à 16:59:54 Roycewick54 a écrit :
D'accord merci mais pourquoi Column ?
Cest le fait que l'on utilise des colonnes que je ne comprends pas

Dans ta base de données, tu as les tables, tu as aussi les Column's:
https://image.noelshack.com/fichiers/2015/14/1427834737-sans-titre.png

Ici, j'ai utiliser fetchColumn() qui me permet de renvoyer les données d'une seule colonne.

Roycewick54
Roycewick54
Niveau 7
04 avril 2015 à 10:37:54

Oui et effet, merci beaucoup pour vos réponses.

Je vous demandais ça parce que avant j'utilisais mysql comme API et du coup j'utilisais des fonctions avec des lignes.

Merci encore.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment