我有一個查詢是爲了從Wordpress表中返回用戶詳細信息。如果我只是選擇了我想要的列名,那很好,但是在Wordpress中,有一個usermeta表,它有2列--1個稱爲metakey,1個稱爲元值。在my-sql查詢中使用GROUP CONCAT和wp_usermeta表
我想從元鍵(如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,我大概didnt去properely解釋它...
這是用戶表:
ID userlogin password email date-registered
2 jay xxxxxx [email protected] 1/2/12
5 pete xxxxxx [email protected] 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'];
}
我有第一個和最後一個名字已經放入一個數組,名稱[]。但是,如何實現它,所以基本上,usermeta表將例如DOB metakey作爲一個列處理,因此我可以將所有內容都拉到數組中,並且與其他用戶數據一樣在samme「行」中。
我認爲你需要更好地解釋你正在努力實現的目標。也許在這些表格中給出'這個樣本數據'的形式的一個例子,我想檢索'這些結果'。 – nnichols 2012-03-14 01:41:19