将查询中的数字结果分配给数组中的文本

时间:2012-03-09 16:33:33

标签: php

我只是在学习PHP而且我已经搜索了一段时间,但我恐怕我可能不知道如何问它,所以解释可能效果最好。基本上我有一个分组/计数查询返回3条记录。

Status    Total
  0         2
  1         3
  2         2

在我的页面上,我想显示:

Status          Total
 Dev             2
 Active          3
 Arch            2

所以我基本上只想将值0,1和2分配给文本值。我尝试创建一个数组,然后将返回数字段指定为数组。

$_status = array(0 => 'Development', 1 => 'Production', 2 => 'Archive');

while($rowStat = mysql_fetch_assoc($resDev))
{
    echo "<tr><td>$_status[$rowStat['status']]</td><td>{$rowStat['devprojects']}</td></tr>";
};

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

正如您在此处看到的http://php.net/mysql_fetch_assoc字段名称区分大小写

从我在表格示例中看到的字段称为“状态”

您正在使用“状态”

您可以尝试更改

$rowStat['status']

$rowStat['Status']

编辑:

答案的初始版本只关注问题是什么(以及建议的pdo) 我只想补充一点,我同意这里发现的另外两个选择: 通过评论添加到giorgio的答案:你应该只为你的数据库字段使用小写名称;你也应该考虑使用表名作为前缀(而不是product_id或id,user_password而不是密码)有两个主要原因:使用连接获取结果时避免冒号并避免与mysql保留字冲突(作为id,密码)和状态是)

另一个,由Crashspeeder建议通过对该问题的评论:你肯定应该开发错误报告并在实时服务器上禁用它

答案 1 :(得分:0)

我真的不喜欢使用0,1,2来表示数据库中的命名值(除非你有一个关系)...但是使用你的设置,为什么不使用:

while($rowStat = mysql_fetch_assoc($resDev)){
    switch($rowStat['Status']){
        case 0:
            echo "<tr><td>Development</td><td>{$rowStat['devprojects']}</td></tr>";
        break;
        case 1:
            echo "<tr><td>Production</td><td>{$rowStat['devprojects']}</td></tr>";
        break;
        case 2:
            echo "<tr><td>Archive</td><td>{$rowStat['devprojects']}</td></tr>";
        break;
    }
};

修改

有些人真的在寻找复制粘贴答案,所以这里是一个更新的答案,因为Sgt。大规模肛门协会的Crashspeeder扭曲了她的短裤。

创建一个查找数组以引用状态ID:

$statusArray[0] = 'Development;
$statusArray[1] = 'Production;
$statusArray[2] = 'Archive;

然后当你运行mysql_fetch_assoc()循环时,可以像这样引用statusArray查找:

while($rowStat = mysql_fetch_assoc($resDev)){
    echo "<tr><td>{$statusArray[$rowStat['Status']]}</td><td>{$rowStat['devprojects']}</td></tr>";
}