我有一个PHP页面,并尝试列出我的块类别与名称而不是id' s。
这是我的MariaDB输出:
select id,name from url_category_data;
+----+----------------------+
| id | name |
+----+----------------------+
| 1 | adv |
| 2 | aggressive |
| 3 | alcohol |
| 4 | anonvpn |
| 5 | automobile/bikes |
| 6 | automobile/boats |
| 7 | automobile/cars |
| 8 | automobile/planes |
| 9 | chat |
| 10 | costtraps |
+----+----------------------+
我通过使用这些类别和商店作为id来提供我的阻止列表。 这是我的块类别列表:
select policyid,category_list from url_category_block where status = 1 ;
+----------+---------------+
| policyid | category_list |
+----------+---------------+
| 1 | 8,9,10 |
+----------+---------------+
当我尝试使用echo时,我可以打印出8,9,10
<p> Result is:
<?php
if($result_block===true || $row_list = $result_block->fetch_assoc()){
echo $row_list["category_list"];}?>
</p>
它的输出就像那样:
结果是:8,9,10
但我想显示这些值的名称,例如;
结果是:
汽车/飞机
聊天
成本陷阱
要显示我的数据,我很快会显示列表。
实际上有近150个类别名称和ID。所以,我必须在PHP中自动化这个匹配过程
我看到有人回答了这个问题,但我对MySQL和PHP不是很熟悉,所以这些答案对我来说并不清楚。
如何使用PHP将这些id号转换为打印名称?
答案 0 :(得分:0)
在评论中做@jeroen sais。
创建一个表格url_category_block
),其中有一列policyid
和一列category_id
。对于您需要的每个政策和类别组合,您将有一个条目。然后您可以按以下方式查询:
SELECT url_category_data.name FROM url_category_block LEFT JOIN url_category_data ON url_category_block.category_id = url_category_data.id WHERE policyid = 1;
此查询可能无法立即生效。我没有对它进行测试,每个SQL语法都有所不同,但快速谷歌搜索(sql
,join
)应该可以帮到你。
答案 1 :(得分:0)
最佳解决方案是规范化url_category_block
表,并将每个policy_id - 类别ID对存储在自己的记录中。在这种情况下,对字段值的简单连接将完成您要求的技巧。
快速解决方案是使用find_in_set() function加入2个表:
select *
from url_category_block a
inner join url_category_data b on find_in_set(b.id, a.category_list)>0