recherche mysql

Répondre
subrally
le 07/07/2009 à 16:56
subrally
bonjour

j'ai un tableaux avec 3 colonnes:
-id (un chiffre de 1 à ...)
-login (VARCHAR(20))
-val (Enum('0','1')

je voudrais faire une rechercher et comptabilisé tous les résultat ou par exemple login= abc et val=0 et le stocké dans une variables.

merci d'avance
LA GLOBULE
le 07/07/2009 à 17:48
LA GLOBULE
Ce que tu faire, c'est une requete SQL de ce genre :

SELECT id FROM table WHERE login='abc' AND val='0'


Ensuite, grace à la fonction mysql_num_rows tu peux récupérer le nombre de résultat.
subrally
le 07/07/2009 à 17:49
subrally
excellent merci, c'est la fonctions mysql_num_rows que j'avais oublié :/
subrally
le 07/07/2009 à 18:13
subrally
<?php
$result = mysql_query("SELECT id FROM message WHERE destinataire='".$_SESSION["login"]."' AND read='0'");
if (!$result) { ?>
<a href="...">Boite de reception1</a><?
}
else {
$nb = mysql_num_rows($result);
if ($nb == '0') { ?>
<a href="...">Boite de reception2</a><?
} else {?>
<a href="..."><b>Boite de reception3 <? echo '('.$nb.')';?></b></a>;
<? } } ?>


mon probléme c'est qu'il va au premiere if, pourtant ds mon tableaux les valeurs y sont et je trouve pas la solution

Note du modérateur : merci de lire les conditions d'utilisation des forums, notamment la partie concernant le BB-Code
subrally
le 07/07/2009 à 18:26
subrally
quand j'enleve le "AND read='0'" tous marche niquel sauf qu'il me met dans $nb tous les message

j'précise que la colonne read est de type enum('0', '1') je sais pas si ca change qqch mais je suis sure que non
subrally
le 07/07/2009 à 18:47
subrally
apres 15 milliard d'essais c'etais en faite le mot "read" qui posais probleme dans la requete :/

quel merde je suis, enfin voila merci ^^
LA GLOBULE
le 07/07/2009 à 20:17
LA GLOBULE
Oui, la solution c'est de l'entourer avec des backquotes `.

Genre : AND `read` = '0' (je précise pour ceux qui ont le même problème que toi).

Sinon, tu as une faille de sécurité avec ton WHERE destinataire='".$_SESSION["login"]."'.

Un :
<?php
$sql = " ... WHERE destinataire='".mysql_real_escape_string($_SESSION["login"])."' AND `read` = '0'";
?>

serait plus sage.
subrally
le 08/07/2009 à 20:02
subrally
je comprend pas ma faille de sécurité, j'en doute pas qu'il y en ait car mon session_star()t est trés basique mais quel différence ca fait si je fais .mysql_real_escape_string($_SESSION["login"]).
LA GLOBULE
le 08/07/2009 à 23:56
LA GLOBULE
As tu la documentation de la fonction ? Car la faille est expliquée justement en exemple 2.

Quand on colle une variable dans une requete, il faut TOUJOURS l'escaper. Sinon, tu te risques à de l'injection SQL.
Répondre
LoadingChargement en cours