如何在mysql记录集结果包含数字的地方编写php if语句
我有一个叫做菜单的mysql数据库。我能够查询我的数据库以获得相应的记录集。我不想为每个季节写一个查询。我的问题是:如果季节字段包含2,我想在正文中编写一个php if语句来回显消息 表格菜单如何在mysql记录集结果包含数字的地方编写php if语句,php,string,if-statement,Php,String,If Statement,我有一个叫做菜单的mysql数据库。我能够查询我的数据库以获得相应的记录集。我不想为每个季节写一个查询。我的问题是:如果季节字段包含2,我想在正文中编写一个php if语句来回显消息 表格菜单 id | item (varcar) | season (set) 1 | fresh lemonade | 2,3 2 | smoothie | 2 3 | cafe latte | 4 我的问题很好 mysql\u select\u db($database\u rest
id | item (varcar) | season (set)
1 | fresh lemonade | 2,3
2 | smoothie | 2
3 | cafe latte | 4
我的问题很好
mysql\u select\u db($database\u rest,$rest)$查询菜单=“从中选择*
菜单”
$menus=mysql\u query($query\u menus,$rest)或die(mysql\u error())
$row\U menus=mysql\U fetch\U assoc($menus)
$totalRows\u menus=mysql\u num\u rows($menus)
如果要在recordset field=2的地方工作,我可以编写一个php
<?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";
}
?>
我想编写php,以便每个季节包含2个(例如:if(@$row_menus['seasure']包含1个)echo Spring等。因此,结果如下所示:
fresh lemonade: Spring
fresh lemonade: Summer
smoothie: Spring
cafe latte: Fall
首先,是时候升级那些
mysql\u*
函数了!其次,有更好的方法来建立物品和季节之间的关系。不过,我会让你看看这些东西
$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];
}
}
我没有测试这个,但它应该对你有用。试一下,让我们知道
编辑:我对其进行了更新,以便您可以在单独的行中列出项目,或在每个季节之后列出项目。您有两个选择:
季节
仅保存一个值$seasure=explode(',',$row_菜单['seasure']);
然后使用foreach
语句迭代$seasure
问题是PHP将2,3
解释为字符串。当它转换为数字时,它显示为2
尝试为季节
字段使用多行:
id | item (varcar) | season
1 | fresh lemonade | 3
2 | smoothie | 2
3 | cafe latte | 4
4 | fresh lemonade | 2
这也将有助于您选择所有行where seasure=2
最后,正如Tobias所说,不要使用mysql函数。使用受支持的较新函数。它们不再被维护。请参阅?了解,然后使用或-将帮助您决定使用哪一个。我不理解您的问题。您是否在寻找“开关”构造?我不想切换任何东西。我想显示冬季,如果季节字段包含1,春季,如果季节字段包含2,夏季,如果季节字段包含3,秋季,如果季节字段包含4。请建议大家转到我在开场白中做的
mysqli.*
@iroegbu。我想我可以更规范一些我试过这个。它显示的是一个完整的项目清单,但没有一个赛季。我想知道数据库中的季节性数字(1)是如何在页面上转换为冬季等的,$seasons\u数组
就是在这里发挥作用的。它使用数据库中的数字,并根据数字从数组中提取名称。然而,我仍然只得到一个带有:的物品清单,而没有实际季节的物品清单。如果“所有季节”的季节数等于0,我会在这个选项中使用扳手吗?谢谢DaveyBoy。对我来说,使用多行不是一个选项,因为有数百个菜单项,并且在每个季节多次添加它们不是一个选项。
id | item (varcar) | season
1 | fresh lemonade | 3
2 | smoothie | 2
3 | cafe latte | 4
4 | fresh lemonade | 2