Php 将MySQL结果转换为简单数组的最佳方法是什么?
在许多程序员的帮助下,我已经为这个问题挣扎了好几天,但没有结果。我有一张这样的桌子:Php 将MySQL结果转换为简单数组的最佳方法是什么?,php,mysql,sql,Php,Mysql,Sql,在许多程序员的帮助下,我已经为这个问题挣扎了好几天,但没有结果。我有一张这样的桌子: meta_id | post_id | meta_key | meta_value ---------|-----------|------------|------------------- 46922 | 5923 | adlink | htp://whatever.com 46923 | 5923 | subloc | Menu Page 469
meta_id | post_id | meta_key | meta_value
---------|-----------|------------|-------------------
46922 | 5923 | adlink | htp://whatever.com
46923 | 5923 | subloc | Menu Page
46924 | 5923 | size | Premium
46924 | 5923 | location | Washington
46924 | 5923 | image1 | 5924
46924 | 5923 | image2 | 5925
46925 | 5928 | adlink | htp://whatever.com
46926 | 5928 | subloc | Regular Page
46927 | 5928 | size | Standard
46927 | 5928 | location | Idaho
46927 | 5928 | image1 | 5926
46927 | 5928 | image2 | 5927
id | adlink | sublock | size | location | image1 | image2
-----|--------------------|-------------|---------|------------|----------|---------
5923 | htp://whatever.com | Menu Page | Premium | Washington | 5924 | 5925
5928 | htp://whatever.com | regular Page| Premium | Idaho | 5926 | 5927
我有下面的查询,它返回我要查找的特定结果,但格式与表一样;i、 例如,对于许多具有某个公共post_id的结果行,我需要创建一个数组或结果表,从中我可以访问信息,就像每个不同的post_id创建一个具有该id唯一数据的行一样,如下所示:
meta_id | post_id | meta_key | meta_value
---------|-----------|------------|-------------------
46922 | 5923 | adlink | htp://whatever.com
46923 | 5923 | subloc | Menu Page
46924 | 5923 | size | Premium
46924 | 5923 | location | Washington
46924 | 5923 | image1 | 5924
46924 | 5923 | image2 | 5925
46925 | 5928 | adlink | htp://whatever.com
46926 | 5928 | subloc | Regular Page
46927 | 5928 | size | Standard
46927 | 5928 | location | Idaho
46927 | 5928 | image1 | 5926
46927 | 5928 | image2 | 5927
id | adlink | sublock | size | location | image1 | image2
-----|--------------------|-------------|---------|------------|----------|---------
5923 | htp://whatever.com | Menu Page | Premium | Washington | 5924 | 5925
5928 | htp://whatever.com | regular Page| Premium | Idaho | 5926 | 5927
以下是返回正确信息的查询:
SELECT *
FROM wp_postmeta
WHERE post_id IN (
SELECT post_id
FROM wp_postmeta
WHERE (
meta_value LIKE '%Washington%'
AND meta_key = 'location'
)
使用条件聚合来透视数据 选择post_id, 当meta_key='adlink'然后meta_value END adlink时的最大情况, 当meta_key='sublock'然后meta_value END sublock时的最大情况, 当meta_key='size'然后meta_value END size时的最大值, 当meta_key='location'然后meta_value END location时的最大值, 当meta_key='image1'然后meta_value END image1时的最大值, 当meta_键='image2'然后meta_值结束image2时的MAXCASE 从wp_Posteta 按邮政编码分组 输出: | POST_ID | ADLINK | SUBLOCK | SIZE | LOCATION | IMAGE1 | IMAGE2 | |---------|--------------------|--------------|----------|------------|--------|--------| | 5923 | htp://whatever.com | Menu Page | Premium | Washington | 5924 | 5925 | | 5928 | htp://whatever.com | Regular Page | Standard | Idaho | 5926 | 5927 |
下面是演示使用条件聚合来透视数据 选择post_id, 当meta_key='adlink'然后meta_value END adlink时的最大情况, 当meta_key='sublock'然后meta_value END sublock时的最大情况, 当meta_key='size'然后meta_value END size时的最大值, 当meta_key='location'然后meta_value END location时的最大值, 当meta_key='image1'然后meta_value END image1时的最大值, 当meta_键='image2'然后meta_值结束image2时的MAXCASE 从wp_Posteta 按邮政编码分组 输出: | POST_ID | ADLINK | SUBLOCK | SIZE | LOCATION | IMAGE1 | IMAGE2 | |---------|--------------------|--------------|----------|------------|--------|--------| | 5923 | htp://whatever.com | Menu Page | Premium | Washington | 5924 | 5925 | | 5928 | htp://whatever.com | Regular Page | Standard | Idaho | 5926 | 5927 |
这里是演示您可以用PHP代码构建结果表。与此类似:
$result[$row["post_id"]][$row["meta_key"]] = $row["meta_value"];
其中$row-是MySQL结果中的一行您可以用PHP代码构建结果表。与此类似:
$result[$row["post_id"]][$row["meta_key"]] = $row["meta_value"];
其中$row-是MySQL结果中的一行您需要一些SQL fu。PHP不需要说明您需要一些SQL fu。PHP Unnectssary我希望找到一个比构建一个具有唯一post_id的表,然后遍历另一个表以查找不同的id更简单的解决方案…我希望找到一个比构建一个具有唯一post_id的表,然后遍历另一个表以查找不同的id更简单的解决方案…谢谢!这是正确的!谢谢这是正确的!