如何编写php if语句,其中mysql记录集结果包含数字


How to write php if statement where mysql recordset result contain number

我有一个名为菜单的mysql数据库。我能够查询我的数据库,以获得相应的记录集。我不想为每个季节写一个查询。我的问题:我想写一个php if语句内体回显消息,如果季节字段包含2.

表菜单

id | item (varcar)  | season (set)
1  | fresh lemonade | 2,3
2  | smoothie       | 2
3  | cafe latte     | 4

My query works fine

mysql_select_db (database_rest,剩余美元);$query_menus = "SELECT * FROM .

菜单";

$menus = mysql_query($query_menus, $rest) or die(mysql_error());

$row_menus = mysql_fetch_assoc($menus);

$totalRows_menus = mysql_num_rows($menus);

我可以写一个php如果工作在recordset字段= 2的工作

<?php echo $row_menus['item']; ?>: <?php
      if (@$row_menus['season'] == 1)
        {
        echo "Winter";
        }
      else if (@$row_menus['season'] == 2)
        {
        echo "Spring";
        }
      else if (@$row_menus['season'] == 3)
        {
        echo "Summer";
        }
      else if (@$row_menus['season'] == 4)
        {
        echo "Fall";
        }
      ?> 

结果表明:

fresh lemonade: Spring
smoothie: Spring
cafe latte: Fall

我想写php,如果季节包含2(例如:如果(@$row_menus['season']包含1)echo Spring,等等。所以结果是这样的:

fresh lemonade: Spring
fresh lemonade: Summer
smoothie: Spring
cafe latte: Fall

首先,是时候升级那些mysql_*功能了!其次,有更好的方法来建立商品与其季节之间的关系。不过,我会让你去调查那些东西的。

$query_menus = "SELECT * FROM menus";
$menus = mysql_query($query_menus, $rest) or die(mysql_error());
$seasons_array = array('All Seasons', 'Winter', 'Spring', 'Summer', 'Fall');
while($row_menus = mysql_fetch_array($menus))
{
    $item = $row_menus['item'];
    $season = $row_menus['season'];
    if(strpos($season, ',') !== false)
    {
        $seasons = explode(',', $season);
        // To show the item and season on separate rows
        foreach($seasons as $s)
            echo $item . ': ' . trim($seasons_array[(int)$s]);
        // To show the item, and then a list of seasons
        echo $item . ': ';
        foreach($season as $k => $s)
            echo trim($seasons_array[(int)$s]) . (($k + 1) == count($season) ? '' : ', ');
    }
    else
    {
        echo $item . ': ' . $seasons_array[(int)$season];
    }
}

我没有测试这个,但它应该适用于你。试一试,让我们知道。

编辑:我更新了它,以便您可以在单独的行中列出项目,或者在每个季节之后列出项目。

你有两个选择:

  1. 使用PHP将字段拆分为一个数组,然后遍历
  2. 使用多个行,season只保存一个值

使用PHP,您可以使用$season=explode(',',$row_menus['season']);,然后使用foreach语句迭代$season

问题是PHP将2,3解释为字符串。当它转换成数字时,显示为2

尝试为season字段使用多行:

id | item (varcar)  | season
1  | fresh lemonade | 3
2  | smoothie       | 2
3  | cafe latte     | 4
4  | fresh lemonade | 2

这也可以帮助您选择所有行where season=2

最后,正如Tobias所说,不要使用mysql_函数。使用支持的新函数