2012-07-11 75 views
1

我在我的網站中有投票系統,我想檢查用戶是否已投票,投票或不投票。 減少no。查詢我選擇完全包含表ID等於用戶ID投票表中投票表 表架構是Vote table 的回答表 表架構是answer table如何找到mysql_query返回的數組中的一些值

$query=SELECT answer_id,user_id,vote FROM vote WHERE user_id='{$_SESSION["id"]}' 
$result1=mysql_query($query); 
$array=mysql_fetch_array($result1); 

現在,當我取回問題的答案,我要檢查如果這個用戶已經投了票 如果answer_id已經在這個數組中找到比我想找到投票的價值?

代碼

$query1="SELECT * FROM answers WHERE question_id='{$question_id}'";//$question_id is id of question 
$result=mysql_query($query1); 
if($result){ 
    While ($row=mysql_fetch_arrar($result)){ 
     if(in_array($row["id"],$array){ 
      echo $array["vote"]; 
     } 
    } 
} 

我很困惑如何取出兩個陣列一起...?該查詢,因爲我不使用while循環在$陣列,任何人可以幫助我只適用於第一個值.. ?

+2

我想你可以左加入共同領域(這裏可能是answer_id)的兩個查詢,並添加條件的answer_id。 – heyanshukla 2012-07-11 11:47:12

+0

如果我們能夠看到這兩個表的模式,這可能會更容易回答。 – andrewsi 2012-07-11 12:11:16

+0

@andrewsi ya sure .... – StaticVariable 2012-07-11 13:54:44

回答

1

這可以在一個查詢中完成,以確定用戶是否投了答案。不需要初步查詢來獲取用戶投票,或者在獲取循環內進行數組比較。

針對votes上的子查詢使用LEFT JOIN,並在其WHERE子句中提供用戶標識。如果uservotes.vote的值爲NULL,則用戶有而不是投票贊成此答案。否則,uservotes.vote將包含用戶的投票。

SELECT 
    answers.*, 
    uservotes.vote 
FROM 
    answers 
    LEFT JOIN (
    SELECT answer_id, vote FROM votes WHERE user_id = '{$_SESSION["id"]}' 
) uservotes ON answers.id = uservotes.answer_id 
WHERE answers.question_id = {$question_id} 
+0

我已經給了我的數據庫模式,你會plz告訴我確切的價值....我不是很熟悉左加入?? – StaticVariable 2012-07-11 14:25:25

+0

@Lokesh我不知道你還需要什麼。我已經給你完整的查詢,唯一需要的。對其進行測試並驗證結果 – 2012-07-11 14:55:31