0

关于之前的问题,我刚刚设法由一个非常慷慨的人解决。我还有 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>";

该脚本不起作用,但也许有人可以对解决方案有所了解?我将不胜感激!

4

5 回答 5

1
$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>";
于 2014-06-02T20:04:21.800 回答
1

你可以使用一个数组:

$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>";
于 2014-06-02T20:11:27.643 回答
1

您可以在查询中执行此操作:

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
于 2014-06-02T20:07:17.253 回答
0

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

在哪里$gender定义?

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

于 2014-06-02T20:04:35.720 回答
0

您可以让您的 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
于 2014-06-02T20:16:12.673 回答