gpt4 book ai didi

php - 在带有 wp_usermeta 表的 mysql 查询中使用 GROUP_CONCAT

转载 作者:行者123 更新时间:2023-11-30 23:32:51 29 4
gpt4 key购买 nike

我有一个查询,旨在从 Wordpress 表中返回用户详细信息。如果我只是选择我想要的列名,那会很好,但在 Wordpress 中有一个 usermeta 表,它有 2 列 - 1 称为元键,1 称为元值。

我想从元键(例如 first_name 和 last_name)中获取某些用户信息,但它们都在同一列 - 元值中。

这是我的:

    $allquery="SELECT $comma_separated, wp_usermeta.meta_value, wp_usermeta.meta_key, 
//comma_seperated are a list of values to search for seperate by ",". this is name, email
GROUP_CONCAT(
wp_usermeta.meta_value
ORDER BY wp_usermeta.meta_key
) AS name
FROM wp_users
LEFT JOIN wp_usermeta
ON wp_users.ID = wp_usermeta.user_id
WHERE (wp_usermeta.meta_key = 'first_name'
OR wp_usermeta.meta_key = 'last_name')
AND wp_users.user_login = '$spec_user'
GROUP BY wp_users.ID";

$names = array();
$allresult=mysql_query($allquery) or die(mysql_error());

while($rows=mysql_fetch_array($allresult)){

$names[] = $rows['name']; //name is from the group_concat in query
$emails[] = $rows['user_email'];
}

问题是,这只会返回一行。我认为这可能与这条线有关:

AND wp_users.user_login = '$spec_user'

其中 $spec_user 是用户输入的值。

理想情况下,我想要的是返回 user_login 列等于用户输入内容的所有行。不仅来自该表,还来自 usermeta 表。

编辑@nnichols,我可能没有去适本地解释它......

这是用户表:

ID    userlogin    password    email        date-registered
2 jay xxxxxx xxx@xxx.xcom 1/2/12
5 pete xxxxxx xxxx@xxx.com 2/2/12

这是用户元表:

umetaid     userid    meta_key     meta_value
122 2 first_name james
123 5 first_name peter
155 2 last_name jones
167 5 last_name gould
168 2 DOB 16/8/89
190 5 DOB 23/5/70

所以我试图将单个查询中的值提取到 PHP 循环中,这样我就可以像这样将它们添加到数组中:

$names = array();
$dob = array();

$allresult=mysql_query($allquery) or die(mysql_error());

while($rows=mysql_fetch_array($allresult)){

$names[] = $rows['name']; //name is from the group_concat in query
$emails[] = $rows['user_email'];
$dob[] = $rows['custom_field_dob'];

}

我已经将名字和姓氏放入一个数组 names[] 中。但是我如何实现它,本质上 usermeta 表将 DOB 元键视为一列,这样我就可以将所有内容拉到数组中,并与其他用户数据位于相同的“行”中。

最佳答案

你可以使用下面的sql来实现你的目的,可能需要更改表名,字段名等......

SELECT distinct(user.id),

(SELECT GROUP_CONCAT(u2.meta_value SEPARATOR ' ') FROM usermeta as u2 where u2.user_id=user.id and (u2.meta_key='first_name' OR u2.meta_key='last_name')) AS name ,

user.email 作为 user_email,(SELECT u3.meta_value from usermeta u3 where u3.user_id=user.id and u3.meta_key='DOB')AS custom_field_dob

FROM user, usermeta WHERE usermeta.user_id = user.id

请看下图... enter image description here

关于php - 在带有 wp_usermeta 表的 mysql 查询中使用 GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9693099/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com