当前位置: 首页 > 知识库问答 >
问题:

如何在mysql记录集结果包含数字的地方编写php if语句

龙骏
2023-03-14

我有一个叫做菜单的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,$rest)$查询菜单=“从菜单中选择*”;

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

$row_menus=mysql_fetch_assoc($菜单);

$totalRows\u menus=mysql\u num\u rows($menus);

我可以写一个php,如果工作的记录集字段=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个(例如:if(@$row_menus['seasure']包含1个)echo Spring等。因此,结果如下所示:

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

共有2个答案

牟辰龙
2023-03-14

你有两个选择:

  1. 使用PHP将字段拆分为一个数组,并处理该数组
  2. 使用多行,其中季节仅保存一个值

使用PHP,您可以使用$赛季=爆炸(',',$row_menus['赛季']);,然后使用Foreach语句遍历$赛季

问题是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函数。使用受支持的较新功能

江子石
2023-03-14

首先,是时候升级那些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];
    }
}

我没有测试这个,但它应该对你有用。试试看,让我们知道。

编辑:我更新了它,这样你就可以在单独的行中列出项目,或者列出每个季节后面的项目。

 类似资料:
  • 我在研究mysqli准备的声明,我有两个问题。 在阅读过程中,我发现预处理语句的执行顺序如下所示: 这是我的第一个问题: 在我阅读时,它还提到以下内容: 如果不将结果绑定到变量,请使用$row=$stmt- 他们使用这两种方法中的任何一种来循环结果集是否有任何优点/缺点?如果没有区别,那么为什么还要麻烦使用$stmt绑定结果呢- 这是我的另一个问题: $stmt- 希望你的回答能让我更好地理解事先

  • 问题内容: 我正在尝试在内容表中插入值。如果我在VALUES内没有PHP变量,则效果很好。当我将变量放在里面时,这是行不通的。我究竟做错了什么? 问题答案: 在任何MySQL语句中添加PHP变量的规则很简单: 任何表示 SQL数据文字的 变量(或简单地说-SQL字符串或数字)都 必须通过准备好的语句添加 。没有例外。 任何其他查询部分(例如SQL关键字,表或字段名或运算符)都必须通过 白名单 进行

  • 问题内容: 有什么不同的方法可以循环遍历mysql结果集?我是PHP和MySQL的新手,所以我正在寻找简单的循环方法以及有关所提供代码如何工作的解释。 问题答案: 这是一个完整的示例: http://php.net/manual/en/mysqli-result.fetch- array.php 连接 选择数据库 进行查询 循环处理结果并获取数组以获取行

  • 问题内容: 这是我正在使用的代码: 在我的视图中,这是我要查看的值: 想象一下,我查询类似的东西,并且返回一个结果集,例如: 如何遍历每个值并输出呢? 这里的文档没有用,因为我尝试了应该存在的方法,但是解释器给我一个错误,指出这些方法不存在。我使用了错误的文档吗? http://www.tmtm.org/en/mysql/ruby/ 谢谢! 问题答案: 如果您使用的是mysql2 gem,那么您应

  • 本文向大家介绍如果记录包含空格,是否使MySQL DISTINCT正常工作?,包括了如果记录包含空格,是否使MySQL DISTINCT正常工作?的使用技巧和注意事项,需要的朋友参考一下 为了获得包括空格的独特性,您可以使用以下语法- 让我们首先创建一个表: 使用插入命令在表中插入一些记录- 以下是使用select语句显示表中所有记录的查询: 这将产生以下输出- 这是获取包含空格的查询: 这将产生

  • 问题内容: 我正在使用MySQL,并且想在SQL中执行一种三元语句,例如: 结果将类似于: 如何做到这一点? 问题答案: