COUNT() retourne un entier ou une chaîne ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : COUNT() retourne un entier ou une chaîne ?

par Ryle » 20 avr. 2009, 14:46

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 Image en haut à gauche de ce sujet.


:langue:

par Sékiltoyai » 17 avr. 2009, 14:23

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…

par pascaltje » 17 avr. 2009, 14:07

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

par mere-teresa » 17 avr. 2009, 12:47

$sql_doublon = "SELECT CAST(COUNT(*) AS UNSIGNED INTEGER)  as nb FROM utilisateur";

Code : Tout sélectionner

object(stdClass)#3 (1) { ["nb"]=> string(1) "3" }
Je crois que la transmission MySQL => PHP sur ce coup là, transtype. Mais pourquoi ?

par mere-teresa » 17 avr. 2009, 12:27

$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
	}
	
}

Code : Tout sélectionner

array(1) { [0]=> string(1) "3" }
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Sékiltoyai » 17 avr. 2009, 12:15

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…

par pascaltje » 17 avr. 2009, 10:48

C'est probablement le fetch_assoc qui renvoie un tableau de chaînes.

A+

Pascal

par albat » 17 avr. 2009, 10:31

Damned ! :shock:

COUNT() retourne un entier ou une chaîne ?

par mere-teresa » 17 avr. 2009, 10:27

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;
	}
}
?>

Code : Tout sélectionner

array(1) { ["nb"]=> string(1) "3" }
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 ?