2013-04-02 2 views
2

데이터베이스 테이블을 기반으로 배열에 추가 :조건 PHP

Table Name: friends 

    user_id | friend_id | accepted | key_id 
-------------------------------------------------- 
    123  | 234  |  2  | 1  
    123  | 456  |  2  | 2 
    123  | 789  |  1  | 3  
    222  | 123  |  2  | 4  
    498  | 123  |  2  | 5  

초기 쿼리 (확인하려면 친구)

$user_id=123; 
$query="SELECT * FROM friends WHERE 
    (user_id='$user_id' OR friend_id='$user_id') 
    AND accepted='2'"; 
$result=mysqli_query($dbc, $query); 
while($row=mysqli_fetch_array($result)) 
{ 
    if($row['user_id']==$user_id) 
    { 
     $friend[]=$row['friend_id']; 
    } 
    if($row['friend_id']==$user_id) 
    { 
     $friend[]=$row['user_id']; 
    } 
} 

print_r($friend); 

내가이 friend 배열 일치로 설정하는 것을 시도하고있다 id는 user_id가 $user_id이거나 friend_id가 $user_id과 같고 허용되는 값이 2입니다. 현재 위의 내용은 반환되지 않으며 배열을 올바르게 포맷하거나 만들지 못했습니다.

이 경우 정확한 결과를 얻는 가장 좋은 방법은 무엇입니까? 다른 테이블에서 선택하려면 IN() 조건을 사용하여 다른 MYSQL 문에 포함될 수 있도록 배열을 포맷해야합니다.

+0

그 코드를 그대로 사용할 수 없습니다 때문입니다. 가져 오기 호출에 오타가 있습니까? – deceze

+0

그럴 때가 있습니다. – Sideshow

+1

쿼리 결과가 반환 되었습니까? –

답변

1

$query="SELECT * 
     FROM friends 
     WHERE (user_id = $user_id OR friend_id = $user_id) 
     AND accepted = '2'"; 

당신이 문자열을 정수를하지 주어야한다 기억처럼 쿼리해야 . 가져 오기가 올바르게 기록됩니다.

출력

key_id user_id friend_id accepted 
------------------------------------- 
1  123  234   2 
2  123  456   2 
4  222  123   2 
5  489  123   2 
+0

감사합니다. Raheel - 방금 내 방식의 오류를 표시했다고 생각합니다. 테스트 데이터베이스에서 id 값은 정수가 아니며 정수로 처리합니다. 쿼리가 아약스 요청을 통해 오류 메시지가 나타나지 않습니다 :) – Sideshow

0

당신은 mysqli_fetch_array에 필요한 매개 변수를 전달되지 않습니다

while($row=mysqli_fetch_array($result))) 

당신이 읽을 수있는 더 in the documentation.

+0

죄송합니다 - 내 원래 코드에서 잘라 붙여 넣기가 있어야합니다. 코드를 편집했습니다. – Sideshow

+0

'$ row [ 'user_id']'와'$ row [ 'friend_id']'에 무언가가 포함되어 있습니까? – Alvaro