【问题标题】:Changing digits in mysql to letters to echo in php将mysql中的数字更改为字母以在php中回显
【发布时间】:2014-07-23 00:41:47
【问题描述】:

关于上一个问题,我刚刚设法由一个非常慷慨的人解决。我还有 1 个问题。 我正在回应登录到我网站的在线用户;但是我也想回应他们的性别。 现在的问题是,性别存储为 0 和 1 而不是男性和女性。我已经尝试过,但我似乎无法让它工作......我的代码;

$result = mysql_query("SELECT DISTINCT name, gender FROM online INNER JOIN base ON  online.ID = base.id limit 8 "); 
switch($gender)
{
    case 0: $gen='Male'; break;
    case 1: $gen='Female'; break;
    default: $gen='Undecided'; break;
}
echo "<table class='table table-hover' width='300'><tr></tr>";
while($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['gender'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "</tr>";
}
echo "</table>";

此脚本不起作用,但也许有人可以阐明解决方案?不胜感激!

【问题讨论】:

  • 在测试前尝试将 $gender 转换为 int。
  • 如果我是你,我会使用 if/else 而不是 switch/case。此外,您那里有很多 html,最好将 html 写在 php 标签之外
  • 您可以使用 switch 部分创建一个函数并返回 $gen,并在显示中使用 DB 性别值调用该函数。
  • 为什么不使用array 查找表呢?还值得注意的是,已弃用的 mysql_query 接口不应在新应用程序中使用,它会在不久的将来从 PHP 中删除。

标签: php mysql echo letters


【解决方案1】:

您可以让您的 RDBMS 为您处理它,而不是从 PHP 处理它。

改用以下 SQL(为格式化添加换行符):

SELECT DISTINCT
    name,
    CASE gender
        WHEN 0 THEN 'Male'
        WHEN 1 THEN 'Female'
        ELSE 'Undecided'
    END CASE AS gender
FROM online
INNER JOIN base
ON online.ID = base.id
LIMIT 8

【讨论】:

  • 这似乎比我目前使用的更容易和更小,即使我已经工作了也会尝试一下!
【解决方案2】:

你可以在查询中做到这一点:

SELECT DISTINCT name, IF(gender=0,'Male','Female') AS real_gender
FROM online INNER JOIN base ON online.ID = base.id limit 8

然后在回显代码中使用$row['real_gender']

如果您需要更多案例,请使用:

SELECT column_name, CASE WHEN column_name IS 0 THEN 'something'
                         WHEN column_name IS 1 THEN 'something else'
                         ELSE 'something diff' END AS some_name
                         FROM table_name

【讨论】:

    【解决方案3】:

    你可以使用数组:

    $gender[0] = "Male";
    $gender[1] = "Female";
    
    $result = mysql_query("SELECT DISTINCT name, gender FROM online INNER JOIN base ON  online.ID = base.id limit 8 "); 
    echo "<table class='table table-hover' width='300'><tr></tr>";
    while($row = mysql_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $gender[$row['gender']] . "</td>";
        echo "<td>" . $row['name'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
    

    【讨论】:

      【解决方案4】:

      switch($gender) { case 0: $gen='Male'; break; case 1: $gen='Female'; break; default: $gen='Undecided'; break; }

      $gender 定义在哪里?

      我认为您需要将此开关放在while ( ) 循环中,然后 使用$switch($row['gender'])

      【讨论】:

        【解决方案5】:
        $result = mysql_query("SELECT DISTINCT name, gender FROM online INNER JOIN base ON online.ID = base.id limit 8 "); 
        
        function getGenderText($genderId) {
            $genders = array('Male', 'Female');
            return isset($genders[$genderId]) ? $genders[$genderId] : 'Undecided';
        }
        
        echo "<table class='table table-hover' width='300'><tr></tr>";
        while($row = mysql_fetch_array($result)) {
            echo "<tr>";
            echo "<td>" . getGenderText($row['gender']) . "</td>";
            echo "<td>" . $row['name'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多