从多个表中拉取MySQL数据并合并成1个PHP数组

时间:2018-05-23 作者:Marek Ojciec Dyrektor Malinows

提前感谢您的帮助。

我正在用配方奶粉处理一点泡菜。我正在尝试创建一个页面模板,该模板将显示用户列表、usermeta表中的特定元数据+此外,我还想从我创建的表中提取数据。以下是表格结构的屏幕截图:https://www.screencast.com/t/X07XDr3Gy.

我的部分工作是获取用户名、姓氏和公司:

$sql = "
SELECT {$wpdb->users}.ID, firstname.meta_value as first_name, lastname.meta_value as last_name, webaria_company.meta_value as webaria_company, 
FROM {$wpdb->users}
INNER JOIN (SELECT user_id, meta_value 
FROM {$wpdb->usermeta} WHERE meta_key = \'first_name\') as firstname ON {$wpdb->users}.ID = firstname.user_id
INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'last_name\') as lastname ON {$wpdb->users}.ID = lastname.user_id
INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'webaria_company\') as webaria_company ON {$wpdb->users}.ID = webaria_company.user_id
";
$asuserlist = $wpdb->get_results($sql);
而且效果很好

但我试图从表attp2\\u as\\u score、列score\\u as中获取更多信息

$sql = "
SELECT {$wpdb->users}.ID, firstname.meta_value as first_name, lastname.meta_value as last_name, webaria_company.meta_value as webaria_company, score_as
FROM {$wpdb->users}, wattp2_as_score
INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'first_name\') as firstname ON {$wpdb->users}.ID = firstname.user_id
INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'last_name\') as lastname ON {$wpdb->users}.ID = lastname.user_id
INNER JOIN (SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = \'webaria_company\') as webaria_company ON {$wpdb->users}.ID = webaria_company.user_id
INNER JOIN (SELECT score_as FROM wattp2_as_score WHERE approved=1) as scoreas ON {$wpdb->users}.ID = scoreas.user_id
 ";

 $asuserlist = $wpdb->get_results($sql);
我得到一个错误:

WordPress数据库错误:[字段列表中的“score\\u as”列不明确]选择wattp2\\u用户。ID,名字。meta\\u值为first\\u name,lastname。meta\\u值作为姓氏,webaria\\u公司。meta\\u值为webaria\\u company,score\\u为wattp2\\u用户,wattp2\\u为\\u score内部联接(选择user\\u id,meta\\u值为wattp2\\u usermeta,其中meta\\u key=\'first\\u name\')作为wattp2\\u用户的firstname。ID=名字。user\\u id internal JOIN(从wattp2\\u usermeta中选择user\\u id,meta\\u value,其中meta\\u key=\'last\\u name\')作为wattp2\\u用户的lastname。ID=姓氏。user\\u id内部联接(从wattp2\\u usermeta中选择user\\u id,meta\\u value,其中meta\\u key=\'webaria\\u company\')作为wattp2\\u用户上的webaria\\u company。ID=webaria\\u公司。user\\u id内部连接(从wattp2\\u中选择score\\u as\\u score,其中approved=1)作为wattp2\\u用户上的scoreas。ID=分数。用户\\u id

1 个回复
SO网友:Leo Germani

显然,wattp\\u用户和wattp2\\u as\\u分数表都有一个名为score\\u as的列。

在每次提到之前加上一个带有表名的前缀score_as 列,就像您对ID所做的一样(例如。wattp2_users.ID) 避免模棱两可。

结束

相关推荐

使用php标识特定页面

我必须在wordpress网站的某些特定页面中插入一些滑块。https://www.mousampictures.com/department/wedding/当我添加滑块代码时,它会一次出现。if如何执行以下操作:if (page is wedding){ echo wedding slider } if (page is portrait){ echo portrait slider } 页面管理端url为:https://www.mousampict