[英]Mysql - SELECT columns from 2 tables using INNER JOIN error
這應該是一個基本問題,但是我已經很長時間沒有使用Mysql了,並且忘記了所有基本知識。 所以程序員請多多包涵。
我有2張桌子,像這樣:
表1(事件): 此處
表2(用戶): 此處
我想在事件表中選擇其中event_invitees
包含用戶名的所有行。 我能夠使用以下方法執行此操作:
SELECT * FROM meetmeup_events WHERE event_invitees LIKE '%$username%'
現在,我還要從用戶表中選擇event_invitees
的照片(列名為user_userphoto
)。 我的嘗試是這樣的:
$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結果資源
我怎樣才能做到這一點? 我想念什么? 能給我一些例子嗎?
提前致謝! 我一定會接受有效的答案!
只是以正確的順序編碼查詢即可,您可能希望通過使用別名作為表名來使其更易於管理
嘗試這個 :-
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
實際上是mu.user_username = me.event_inviter
,因為這些字段實際上是相等的
其他建議您實際上並不是在發出要由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
字段;如果該字段為零,則說明使用您的條件找不到任何內容。
您應該將mysql函數更改為mysqli / PDO,盡管問題似乎出在查詢itef上。 應該:
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 Fiddle演示: http ://sqlfiddle.com/#!2/852a2/1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.