将查询结果集列整数值映射到相关字符串

问题描述 投票:0回答:4

我通过查询从数据库中获取一些数据,然后通过 while 循环循环它:

$r = mysql_query("SELECT * FROM advertisement_packages");  
while ($a = mysql_fetch_assoc($r)):
    echo $a['exposure]; //This prints out 1,2,3,4
endwhile;

我该怎么办,所以:

  • 曝光 = 1 = 迷你
  • 曝光 = 2 = 标准

等等。等等

php arrays mapping resultset
4个回答
3
投票
if ($a['exposure'] == 1){
    echo "Mini";
}
elseif($a['exposure'] == 2){
    echo "Standard";
}

0
投票
$labels = array(1 => 'Mini', 2 => 'Standart');
echo $labels[$a['exposure']];

0
投票

独立存储值而不是使用(可能)巨大的

if
结构可能会有所帮助:

$exposures = array(
    1    => 'Mini',
    2    => 'Standard',
    // and so forth
);

while($a = mysql_fetch_assoc($r)):
    echo $exposures[ $a['exposure'] ];
endwhile;

只需花费 0.02 美元即可使代码更清晰。


0
投票

**另一个好方法是在数据库中维护一个表结构,将暴露编号与其描述相关联。通过这种方式,您可以直接从数据库显示曝光描述(您还可以从 Exposure_info 表填充 Web 表单上的下拉菜单)。就按照示例SQL来看看你是否理解了。 **

创建表 photo_clients( id INT 自动递增主键, 客户端名称 VARCHAR(100), 曝光TINYINT );

创建表exposure_info( 暴露INT AUTO_INCRMENT PRIMARY KEY, 描述 VARCHAR(100) );

插入exposure_info(描述)值('迷你'),('标准'),('海报');

插入 photo_clients (client_name, 曝光) VALUES ('John Doe', 2), ('Jane Smith', 1), ('Johnny Walker', 3);

选择 a.client_name AS 客户端,b.description AS 曝光 FROM photo_clients a,exposure_info b WHERE a.exposure = b.exposure;

上述语句的输出应类似于:

client          exposure
------------------------
Jane Smith      mini
John Doe        standard
Johnny Walker   poster
© www.soinside.com 2019 - 2024. All rights reserved.