2014-12-19 6 views
0

functions.php

function getfriendone($id, $field){ 
$query = mysql_query("SELECT `$field` FROM `friends` WHERE `user_one`='$id'"); 
$run = mysql_fetch_array($query); 
return $run[$field]; 
} 

function getfriendtwo($id, $field){ 
$query = mysql_query("SELECT `$field` FROM `friends` WHERE `user_two`='$id'"); 
$run = mysql_fetch_array($query); 
return $run[$field]; 
} 

index.php를

$fetch_friends = $_SESSION['user_id']; 
$two = getfriendone($fetch_friends, 'user_two'); 
$three = getfriendtwo($fetch_friends, 'user_one'); 

$result = mysql_query("SELECT * FROM posts WHERE id IN ('$two', '$three')"); 
echo $two." | ".$three; 

표 getfriend 함수 (친구)

ID user_one user_two 
1  1   2 
2  1   3 
3  4   1 

표 (게시물) 컬럼 만 첫 번째 행을 선택하지 결과

ID TEXT NAME 
1  Hello Bob 
1  Hello Bob 
2  Hello Mark 

여기서 내가하고 싶은 것은 user_one과 user_two 둘 다에 정수 1이있는 모든 행을 반향하는 것입니다. 내 추격전에서는 ID 1과 ID 3 만이 여기에 울려 퍼집니다. 그것은 첫 번째 매치를 선택하고 그 중 하나만 울립니다. 예상대로 그것은 작동하지만 열

+0

을하지 않습니다 mysql_ 대신에 mysqli_ 또는 pdo를 사용하십시오 – Rasel

+0

mysql_query 함수와 mysql * 함수는 모두 최신의 최신 PHP 버전에서 삭제 된 의미입니다. 따라서 문제를 피하기 위해 사용하지 않는 것이 좋습니다. 당신의 코드는 또한 SQL injection에 취약합니다. 그냥 말했다. – Mubo

답변

1

의 첫 경기에 내가 제대로 읽을 경우

SELECT * 
FROM posts s 
WHERE 
EXISTS 
(SELECT 1 FROM posts s2 WHERE s.id = s2.user_one) OR 
(SELECT 1 FROM posts s2 WHERE s.id = s2.user_two) 

당신이 SQLFiddle

필요한 데이터를 추출합니다 -> http://sqlfiddle.com/#!2/9ae070/3/0