Si vous souhaitez travailler sur chaque ligne de données renvoyées par votre requête SQL, vous devez placer votre condition dans la boucle while
- qui effectue une itération sur les lignes retournées par la excution de la requête:
$query = mysql_query("SELECT marital_status FROM people WHERE first_name = 'John'");
while ($row = mysql_fetch_assoc($query)) {
$maritalStatus = $row['marital_status'];
if ($maritalStatus == "yes") {
echo "This person is married.";
}
else {
echo "This person is NOT married.";
}
}
Si cela ne fonctionne pas, il pourrait être utile de vérifier:
- Si la requête renvoie effectivement des résultats
- Si ces résultats sont réellement ce que vous pensez qu'ils sont.
Cela peut être fait en utilisant var_dump
, pour vider le contenu d'une variable. Par exemple, dans votre situation, vous pouvez utiliser:
$query = mysql_query("SELECT marital_status FROM people WHERE first_name = 'John'");
while ($row = mysql_fetch_assoc($query)) {
var_dump($row); // Will display the content of $row
}
En tant que sidenote, vous avez dit dans un commentaire que l'écho $ maritalStatus vous obtient "Yes
".
S'il y a une Y
en majuscules dans votre base de données, qui est la raison pour laquelle votre code échoue: vous testez pour « yes
» en minuscules.
En PHP, en utilisant l'opérateur ==
pour les comparaisons de chaînes, les majuscules et les minuscules sont considérées comme des caractères différents.
Si vous voulez comparer d'une manière insensible à la casse, vous devez soit:
- Convertir toutes les chaînes à la même affaire (supérieur ou inférieur, à vous de choisir)
- utiliser une fonction de comparaison insensible à la casse, comme
strcasecmp
Que faites-vous si vous faites « echo $ maritalStatus » au lieu du si? –
Je reçois la valeur réelle: "Oui". – Susan
Note: "yes"! = "Yes" – Pickle