2012-03-09 93 views
0

我刚刚学习PHP,并且在这方面搜索了一段时间,但是恐怕我可能不知道如何提问,所以解释可能会起作用最好。基本上我有一个由/ count查询返回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>"; 
}; 

任何帮助,非常感谢。

谢谢。

+0

在开发你应该把错误报告提高到'E_ALL'。这会告诉你,关键的“状态”不存在(因为它实际上是一个大写字母S的“状态”)。 – Crashspeeder 2012-03-09 16:40:50

回答

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; 
    } 
}; 

编辑

有些人真的在寻找复制粘贴答案,所以这里是一个更新的答案,因为军士。 Massively Anal Society的Crashspeeder扭转了她的内裤。

创建查找数组引用对抗状态标识:

$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>"; 
} 
+0

代码重复太多。如果唯一改变的是该行第一列的内容,那么没有理由重印整个内容。另外,你没有修正这个错误,这是'status'中的小写'S'。它应该是一个大写S的“状态”。你的代码仍然不起作用。 – Crashspeeder 2012-03-09 16:42:24

+0

这工作。我应该在表中指定状态字段被称为“状态”(全部小写)。在我的例子中,我有“状态”,这就是我在我的页面上的表格视图中指定的内容。有没有办法做这个数组呢? – Justin 2012-03-09 16:47:28

+0

“$ _status”是我试图创建的数组,用于分配表中变量的值。 – Justin 2012-03-09 16:49:18

1

,你可以在这里看到http://php.net/mysql_fetch_assoc字段名称是区分大小写的

从我在你的桌子,看样的领域被称为“状态”

和您正在使用“状态”

你可以尝试改变

$rowStat['status'] 

$rowStat['Status'] 

编辑:

答案的最初版本只专注于什么问题(和建议PDO) 我只想补充一点,我同意在这里发现的另外两个optinions:通过注释添加到一个 这个答案由乔治:你应该只使用小写字母名称为您的数据库字段;还应该考虑使用表名作为前缀(product_id替代或id,user_password而不是密码),主要有两个原因:避免在使用连接访存结果时出现变形,并避免与mysql保留字(如id,password和状态)

另一种,通过对问题的评论通过Crashspeeder建议:你一定要与错误发展报告和禁用直播服务器

+2

您可能想要将字段名称更改为小写。按照约定,变量和sql列/表/数据库名称都以小写字母写。例外是;类变量($ camelCase)和带有多个单词的$ php变量($ seperated_by_underscore)。 – giorgio 2012-03-09 16:40:01

+0

@giorgio非常好的补充..一件事..使用下划线分隔的php变量似乎并不是一个例外:)数据库字段也应该有多个词并且下划线(在我看来)是将它们分开的最好方法 – mishu 2012-03-09 16:42:54

+0

大声笑:你是完全正确的,这是一个除了一个例外,但是,我想op得到我的意思;)是的,我同意,多字字段/数据库字段名称也应该用下划线分隔! – giorgio 2012-03-10 12:46:42

相关问题