如何根据mysql表格单元格的值执行if语句。例如,我有一个名为marital_status列的人员表。此列具有以下两个值之一:是或否。但这不起作用:
$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.";
}
$ maritalStatus ==“yes”不会返回true,即使这正是该单元格中的值。
答案 0 :(得分:4)
如果你想处理SQL查询返回的每一行数据,你应该把你的条件放在while
循环中 - 它遍历执行查询返回的行:
$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.";
}
}
如果这没有帮助,检查:
这可以使用var_dump
来完成,以转储变量的内容。例如,在您的情况下,您可以使用:
$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
}
作为旁注,你在评论中说回到$ maritalStatus会让你“Yes
”。
如果您的数据库中有大写Y
,那就是您的代码失败的原因:您正在测试小写的“yes
”。
在PHP中,使用==
运算符进行字符串比较,大写字母和小写字母被视为不同的字符。
如果您想以不区分大小写的方式进行比较,则必须:
strtolower
或strtoupper
mb_strtolower
/ mb_strtoupper
如果使用多字节编码,例如UTF-8 strcasecmp
答案 1 :(得分:1)
您应该在if
循环内移动while
块
并确保你考虑信件案件。
$query = mysql_query("SELECT marital_status FROM people WHERE first_name = 'John'");
while ($row = mysql_fetch_assoc($query)) {
$maritalStatus = strtolower($row['marital_status']);
if ($maritalStatus == "yes") {
echo "This person is married.";
}
else {
echo "This person is NOT married.";
}
}