2017-07-25 76 views
0

我試圖找到在互聯網的答案,我發現了一些東西,但我不明白這一點:-)WP - 煩惱與連接兩個表

我剛兩個表 - wp_users & wp_usermeta。這兩個表具有相同的ID(wp_users.ID和wp_usermeta.user_id)。我只需要從wp_users獲取電子郵件地址,並使用wp_usermeta的暱稱加入它。

我初學SQL,這將是非常有益的,如果有人可以解釋:-)非常感謝你:-)

<?php 
    //I just want tu print in echo all user emails connected with their nicknames from two separate tables - wp_users 
    //and wp_user_meta. I am trying to connect these tables with "ID" which has these two tables the same (inner join part) 
    $teacher_table = "SELECT wp_users.user_email, wp_usermeta.nickname 
        FROM wp_users,wp_usermeta 
        INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id"; 
    $results_table_main = $wpdb->get_results($teacher_table); 

    foreach ($teacher_table as $value){ 
     echo $value; 
    } 
    ?> 
+0

您試圖加入wp_usermeta兩次,一次與內通過在使用逗號從表達加入表達一次。 – Devon

+1

你也試圖在一個字符串上運行'foreach'循環,它應該是'foreach($ results_table_main作爲$ value)' – WheatBeak

+0

現在我沒有錯誤,但echo也不會輸出:-) urghhh,這個是很難的一個:D –

回答

1

以前的答案和意見將與問題,但主要幫助這裏的問題是,您要查詢的列不存在,wp_usermeta.nickname

這是你需要做什麼:

$teacher_table = "SELECT wp_users.user_email, wp_usermeta.meta_value 
FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id 
WHERE wp_usermeta.meta_key = 'nickname'"; 

和公正的良好措施ŧ他的代碼的其餘部分,請注意返回的變量是一個對象,因此必須這樣訪問。

$results_table_main = $wpdb->get_results($teacher_table); 

foreach ($results_table_main as $value){ 
    echo $value->user_email; 
    echo $value->meta_value; 
} 
+0

加上一個該foreach;) –

+0

是的 - 邏輯這是去的方法:-)無論如何,仍然出現錯誤 - >「可捕捉的致命錯誤:類stdClass的對象無法轉換爲字符串...」生病嘗試調試它:-)謝謝無論如何: - ) –

+0

看到我的最新編輯:D – WheatBeak

0

您正在使用錯誤的查詢。

global $wpdb; 
$sql = "SELECT u.user_email , 
     um.meta_value AS nickname 
    FROM wp_users u 
    INNER JOIN wp_usermeta um ON u.ID = um.user_id 
    WHERE um.meta_key = 'nickname'"; 

$results = $wpdb->get_results($sql); 

foreach ($results as $value){ 
    echo "EMAIL : ".$value->user_email . "<br/>"; 
    echo "NICKNAME : ".$value->nickname. "<br/>"; 
    echo '<br/>'; 
} 

我認爲這將是有益的

+0

我很抱歉,你能解釋一下,爲什麼你把字母「u」而不是wp_users?而不是「wp_usermeta」你把「嗯」。這對我來說非常困惑:-( –

+0

很容易爲我編寫代碼,這就是爲什麼我使用別名 –

+1

這只是一個別名,您可以在表後使用任何字或字母,然後您不需要繼續在查詢的其餘部分寫出整個表名,你可以在這裏瞭解更多關於它們的信息(https://www.w3schools。COM/SQL/sql_alias.asp) – WheatBeak