我有一个名为菜单的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];
}
}
我没有测试这个,但它应该适用于你。试一试,让我们知道。
编辑:我更新了它,以便您可以在单独的行中列出项目,或者在每个季节之后列出项目。
你有两个选择:
- 使用PHP将字段拆分为一个数组,然后遍历
- 使用多个行,
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_函数。使用支持的新函数