У меня есть запрос, который предназначен для возврата сведений о пользователях из таблиц Wordpress. Было бы хорошо, если бы я просто ВЫБИРАЛ имена столбцов, которые мне нужны, но в Wordpress есть таблица пользовательских мета, которая имеет 2 столбца - 1 с именем metakey и 1 с именем meta value.
Я хочу получить определенные биты пользовательской информации из мета-ключей, таких как first_name и last_name, но все они находятся в одном столбце - metavalue.
Вот что у меня есть:
$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.
EDIT
@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
А это таблица usermeta:
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, например, как столбец, чтобы я мог вытянуть весь контент в массив и оказаться в «строке» samme как другие пользовательские данные.