download1323 2010-03-30 16:36
浏览 58
已采纳

如何根据MySQL表格单元格的值进行IF语句?

How can I do an if statement based on the value of a mysql table cell. For example, I have a table of people with a column called marital_status. This column has one of two values: yes or no. But this doesn't work:

$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" doesn't return as true even though that is exactly the value in that cell.

  • 写回答

2条回答 默认 最新

  • douzhi9478 2010-03-30 16:39
    关注

    If you want to work on each line of data returned by your SQL query, you should place your condition inside the while loop -- which iterates over the lines returned by the excution of the query :

    $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.";
        }
    }
    


    If this doesn't help, it could be useful to check :

    • If the query actually returns results
    • If those results are actually what you think they are.

    This can be done using var_dump, to dump the content of a variable. For example, in your situation, you could use :

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



    As a sidenote, you said in a comment that echoing $maritalStatus gets you "Yes".

    If there is a Y in uppercase in your database, that's the reason why your code fails : you are testing for "yes" in lowercase.

    In PHP, using the == operator for string comparisons, uppercase letters and lowercase letters are considered as different characters.

    If you want to compare in a case-insensitive manner, you'll have to either :

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c