SELECT COUNT & PHP

Résolu/Fermé
coronier - 2 nov. 2009 à 13:50
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 2 nov. 2009 à 15:11
Bonjour,

J'ai un problème pour PHP renvoie la valeur correcte d'un comptage dans une BDD MySQL.
Voici mon code:
$sql= mysql_query("SELECT count (*) FROM Profils WHERE mail='$mail'");

alors que ma requête sous PhpMyAdmin marche très bien et renvoie le bon résultat:
SELECT count (*) FROM Profils WHERE mail='Un Truc'.

J'ai essayé les mysql_result, les mysql_fetch_array et autres joyeuseries, ca fait deux jours que je ne trouve pas de solution...

Merci d'avance.

9 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 nov. 2009 à 14:53
// Checkmail
$sql = 'SELECT * FROM `Profils` WHERE mail="$mail"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);

echo 'Il y a ' . $nb . ' valeurs<br>'; 
Le comptage n'est par erronné : Entre apostrophes, les variables ne sont pas remplacées par leur valeur, contrairement aux guillemées. Voici donc la ligne corrigée :
$sql = 'SELECT * FROM `Profils` WHERE mail="'.$mail.'"'; 
1
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 nov. 2009 à 14:00
Essaye avec ça :
<?php
...
$sql = 'SELECT COUNT(*) AS `nb` FROM `profils` WHERE `mail`="'.$mail.'"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$data = mysql_fetch_assoc($req);
$nb = $data['nb'];
...
?>
Il y a aussi une seconde méthode :
<?php
...
$sql = 'SELECT * FROM `profils` WHERE mail="'.$mail.'"';<
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);
...
?>
0
Bonjour avion,

Merci pour tes propositions qui me semblent tout ce qu'il y a de plus juste, pourtant les deux me renvoient des erreurs:

Erreur dans “SELECT * FROM `profils` WHERE mail="truc@machin.fr"” :

Pourtant l'écriture de données ne pose aucun problème... Un truc m'échappe vraiement.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 nov. 2009 à 14:10
C'est peut-être (même sûrement) parce que j'ai mis "profils" en minuscules.
Je te conseil de renommer ta table en minuscule plutôt que de mettre une majuscule à la requête.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Il y avait en effet un problème de majuscules, merci.

En revanche, le count est erronné; il me retourne aucune valeur alors qu'elles y sont, ce qui conduit à une tentative infructueuse d'inscription (doublon table primaire) et à un feedback erroné. Je met mon bout de code:


// Checkmail
$sql = 'SELECT * FROM `Profils` WHERE mail="$mail"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);

echo 'Il y a ' . $nb . ' valeurs<br>';

// Test Regex Mail
if(preg_match('`^:alnum:([-_.]?:alnum:)+_?@:alnum:([-.]?:alnum:)+\.[a-z]{2,4}$`',$mail))
{
$mailok=1;
}
...
// Vérif pwd
if ($pwd1 == "" OR $pwd2 == "")
...

// Check Pwd équivalents
if($pwd1!=$pwd2){
...


// Si mail Ok et pas de doublons, inscription bdd
if ($nb==0 AND $mailok==1) {
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 nov. 2009 à 14:26
Erreu de ma part :
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query()); 
→ Mets plutot mysql_error()
0
En effet, merci.

Par contre ca ne changera pas le problème de comptage...

Je ne vois pas ce qui plante dans mon code php...
0
Cher camarade,

Ta statue, je te la fais en or ou en platine ?
Encore merci d'avoir été aussi didactique et patient. Vraiment bon esprit.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
2 nov. 2009 à 15:11
En platine, je veux bien.
Mais ne la fait pas trop grande parce que ... : Masse volumique = 21 090 kg/m³
0