【问题标题】:PHP MYSQL CASE substitution in array [duplicate]数组中的PHP MYSQL CASE替换[重复]
【发布时间】:2015-01-01 10:25:36
【问题描述】:

大家早上好,新年快乐!

我正在尝试将 MYSQL 数据库中的所有记录选择到一个数组中,其中 1 列与列表匹配,然后在从该列中选择时替换单元格的输出。

这是一张运动桌,我有 MF、DF、CF 的位置,想分别用中场、后卫和前锋替换它们。

我希望下面的代码能破解它,但收到一条错误消息,它与 FROM 行一致:

警告:mysql_fetch_assoc() 期望参数 1 是资源,布尔值在 /home/peterborough/www/www/wp-content/plugins/insert-php/insert_php.php(48) 中给出:eval() 的代码第 14 行

   $result = mysql_query("SELECT *,
                        CASE Position 
                          WHEN 'DF' THEN 'Defence'
                          WHEN 'MF' THEN 'Midfield'
                          WHEN 'CF' THEN 'Forward'
                      FROM People 
                      WHERE
                         (Position='DF' or
                          Position='MF' or
                          Position='CF') and
                          Season = '2014'
                      ORDER BY Number");
  while($row = mysql_fetch_assoc($result)){...}

谢谢大家

【问题讨论】:

    标签: php mysql case


    【解决方案1】:

    您的 SQL 中有语法错误: CASE 表达式需要 END

      SELECT *,
        CASE Position 
          WHEN 'DF' THEN 'Defence'
          WHEN 'MF' THEN 'Midfield'
          WHEN 'CF' THEN 'Forward'
        END AS position_long
      FROM People 
      WHERE
         (Position='DF' or
          Position='MF' or
          Position='CF') and
          Season = '2014'
      ORDER BY Number
    

    说明: 当语法错误发生时,您会从mysql_query() 调用中获得FALSE 和 当它被传递给mysql_fetch_assoc()时,it 抱怨被赋予一个 boolean 而不是 resource

    【讨论】:

    • 啊,这有帮助!虽然它现在是语法,但它没有做替换?
    • 不确定您的意思。它没有替代 - 您正在向结果中添加一个新列,您可能希望在 END 之后使用 AS position_long 或类似名称,以便新列获得一个合理的名称而不是默认名称。
    • 当然!对不起,忘记了基础!!认为它会动态改变它,而不是创建一个新列!
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2018-09-09
    • 2016-11-02
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    相关资源
    最近更新 更多