2009-12-02 3 views
1

Ok, je suis abit confus ici. Dans ma base de données que j'ai 5 lignes de ces données => « [email protected] » (en minuscules), et voici mon code, requête 1 (je suis en utilisant php et mysql):Différence de sensibilité à la casse dans SELECT COLUMN et COUNT, mysql?

$str = '[email protected]'; 

$sel = mysql_query("SELECT COUNT(*) 
        FROM table 
        WHERE `column` = '{$str}'"); 
$num = mysql_num_rows($sel); 

echo $num; 

Le résultat 1. Mais si je change de qUERY2

SELECT column 
FROM table 
WHERE `column` = '{$str}'" 

Il retourne 5.

Et une autre question, qui demande dois-je utiliser si je veux connaître le nombre de lignes existent dans la base de données, requête 1 ou 2, en termes de vitesse de requête?

Répondre

1
$num = mysql_num_rows($sel); 

Ceci renvoie le nombre de lignes sélectionnées dans votre requête. Pour la requête un, puisque vous sélectionnez COUNT(*) à partir de votre table, elle retourne une seule ligne avec une cellule: la valeur de cette cellule est 5. La deuxième requête sélectionne toutes les entrées ayant la valeur $str, donc mysql_num_rows($sel); retournera en effet 5.

Quant à l'autre question, première requête si plus efficace, mais si vous cherchez le nombre de lignes avec la valeur $str, ne pas utiliser mysql_num_rows() mais mysql_fetch_row().

+0

Merci. Mais quoi de différent entre num_rows et fetch_row? Fetch_row est-il meilleur? Pourquoi?? – mysqllearner

+0

Leurs tâches sont différentes. Lorsque vous exécutez une requête SELECT, elle renvoie un résultat. Ce résultat peut contenir une ligne de données que vous avez sélectionnée. mysql_fetch_row() renvoie la ligne suivante disponible dans le jeu de résultats, tandis que mysql_num_rows() renvoie le nombre de lignes disponibles dans le jeu de résultats. –

Questions connexes