Page 1 sur 1
COUNT() retourne un entier ou une chaîne ?
Posté : 17 avr. 2009, 10:27
par mere-teresa
Je n'ai pas trouvé réponse sur le forum, mais aiguillez moi si vous trouvez.
<?php
require_once ('../connexion.inc.php');
$sql2 = "SELECT COUNT(*) as nb FROM utilisateur";
$resultat = mysqli_query( $link, $sql2 );
while($r = mysqli_fetch_assoc($resultat))
{
echo '<pre>';
var_dump($r);
if($r['nb'] === 1)
{
$ok = true;
}
}
?>
J'ai besoin de dénombrer les enregistrements en base, j'utilise COUNT() sur une BDD MySQL, or en PHP, je reçois une chaîne. Dans la doc MySQL, il est dit que COUNT() renvoie un BIGINT.
Alors, c'est les BIGINT qui deviennent des chaînes en PHP ? Ou juste COUNT() qui fait pas ce qu'on veut ?
Posté : 17 avr. 2009, 10:31
par albat
Damned !

Posté : 17 avr. 2009, 10:48
par pascaltje
C'est probablement le fetch_assoc qui renvoie un tableau de chaînes.
A+
Pascal
Posté : 17 avr. 2009, 12:15
par Sékiltoyai
C'est probablement le fetch_assoc qui renvoie un tableau de chaînes.
Je serais plus de cet avis.
Internement à mysql, le count() est considéré comme un bigint. On pourra faire une opération d'entier dessus. Mais une fois passé au driver, il représente la donnée de la manière qui lui est la plus simple à manipuler…
Posté : 17 avr. 2009, 12:27
par mere-teresa
$sql_doublon = "SELECT COUNT(*) as nb FROM utilisateur";
$resultat = mysqli_query( $link, $sql_doublon );
while($r = mysqli_fetch_row($resultat))
{
echo '<pre>';
var_dump($r);
if($r[0] == 0) // "0" ou "1"
{
//echo unique
}
}
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 17 avr. 2009, 12:47
par mere-teresa
$sql_doublon = "SELECT CAST(COUNT(*) AS UNSIGNED INTEGER) as nb FROM utilisateur";
Je crois que la transmission MySQL => PHP sur ce coup là, transtype. Mais pourquoi ?
Posté : 17 avr. 2009, 14:07
par pascaltje
Je crois que la transmission MySQL => PHP sur ce coup là, transtype. Mais pourquoi ?
parce que :
http://fr.php.net/manual/fr/function.my ... -assoc.php
Valeurs de retour
Retourne un tableau associatif de chaînes qui contient la ligne lue dans le résultat result , ou bien FALSE s'il ne reste plus de lignes à lire.
ça doit être la même chose pour mysqli_fetch_assoc().
A+
Pascal
Posté : 17 avr. 2009, 14:23
par Sékiltoyai
C'est beaucoup plus chiant de gérer tous les types entier, flottant, etc, que d'utiliser un type générique qui fait tout…
Posté : 20 avr. 2009, 14:46
par Ryle
Modération :
mere-teresa, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton
en haut à gauche de ce sujet.
