2014-09-03 59 views
0

這應該是一個基本問題,但我很長一段時間沒有使用Mysql,並忘記了所有基本的東西。所以SO程序員請耐心等待。Mysql - 使用INNER JOIN錯誤從2個表中選擇列

我有2個表所示:

表1(事件):here

表2(用戶):here

我想在事件表中選擇所有行event_invitees包含一個用戶名。我能做到這一點使用:

SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%' 

現在,我想也選擇從用戶表(列稱爲user_userphoto)的event_invitees的照片。我嘗試這是這樣的:

$result = mysql_query("SELECT meetmeup_events.*, meetmeup_user.user_photo 
         FROM meetmeup_events 
         WHERE event_invitees LIKE '%$username%' 
         INNER JOIN meetmeup_user 
          ON meetmeup_user.user_username = meetmeup_events.event_inviter"); 

$rows = array(); 
    while($r = mysql_fetch_assoc($result)) { 
    $rows['meetmeup_user'][] = $r; 
    } 

echo json_encode($rows); 

這給了我一個錯誤:mysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源

我怎樣才能做到這一點?我錯過了什麼?你能舉幾個例子嗎?

在此先感謝!我一定會接受工作答案!

+2

你的查詢語法出了故障。 'WHERE'子句必須位於'FROM'子句和所有'JOIN'之後。一定要檢查錯誤:'mysql_query()'調用後'if(!$ result)echo mysql_error();'' – 2014-09-03 16:07:43

+0

備註:另請參見[爲什麼不應該在PHP中使用mysql_函數](http:// stackoverflow。問題/ 12859942/why-shouldnt -i-use-mysql-functions-in-php) – 2014-09-03 16:09:33

+0

@MichaelBerkowski通過你所說的做。錯誤消失了,但json是空的。 mysql查詢中有更多錯誤嗎? – BuddyBud 2014-09-03 16:10:38

回答

1

它只是一個獲取查詢正確的順序編碼,你可能想使它多了幾分可管理通過使用別名對錶名

嘗試的事情是: -

SELECT me.*, 
     mu.user_photo 
FROM meetmeup_events me 
    INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter 
WHERE me.event_invitees LIKE '%$username%' 

當然,這假設所有的列名是正確的,mu.user_username = me.event_inviter事實上確實讓SENCE,因爲這些領域實際上等於

其他建議 你實際上並沒有發出由mysql執行的查詢。

你必須這樣做: -

$sql = "SELECT me.*, 
      mu.user_photo 
     FROM meetmeup_events me 
      INNER JOIN meetmeup_user mu ON mu.user_username = me.event_inviter 
     WHERE me.event_invitees LIKE '%$username%'"; 

$result = mysql_query($sql); 

$rows = array('mysql_count' => mysql_num_rows($result)); 

while($r = mysql_fetch_assoc($result)) { 
    $rows['meetmeup_user'][] = $r; 
} 

echo json_encode($rows); 

現在使用JavaScript調試器看看返回的數據瀏覽器。即使沒有'meetmeup_user'數組,也應該至少有一個mysql_count字段,如果它爲零,則知道它沒有發現任何使用您的條件。

+0

感謝您的回答。我試過你的代碼,錯誤消失了。但我仍然不明白爲什麼JSON返回空?你能幫我進一步嗎? – BuddyBud 2014-09-03 16:30:06

+0

查看更多建議 – RiggsFolly 2014-09-03 21:30:00

0

您應該將您的mysql函數更改爲mysqli/PDO,儘管問題似乎是查詢itsef。應該是:

SELECT meetmeup_events.*, meetmeup_user.user_photo 
FROM meetmeup_events 
INNER JOIN meetmeup_user 
ON meetmeup_user.user_username = meetmeup_events.event_inviter 
WHERE event_invitees LIKE '%$username%' 

(末尾的WHERE條款)

的Sql小提琴演示:http://sqlfiddle.com/#!2/852a2/1

+0

什麼是'invitee3'? – BuddyBud 2014-09-03 16:25:10

+0

只是一個測試值 – lpg 2014-09-03 16:26:28

+0

感謝您的答案。錯誤消失了,但不知何故JSON返回空。我錯過了什麼? – BuddyBud 2014-09-03 16:30:55