2012-11-05 4 views
1

받은 편지함 시스템을 만드는 데 문제가 있습니다. 내가 뭘 하려는지 "ViewMessages.php"메시지를 표시하는 MYSQL 테이블에서 정보를 가져 오는 중입니다.PHP받은 편지함 시스템

내 첫 번째 문은 다음과 같습니다

$MessageQuery = mysql_query("SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName'"); 

하지만, 그것은 단지 메시지 하나의 방법을 보낸 표시됩니다 결함을 깨달았다. 나는 다음과 같은 것을 시도했다 :

$MessageQuery = mysql_query("SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName' OR FromUName='$ToUName' AND ToUName='$FromUName'"); 

이것은 실패했다. 두 사람이 보낸 메시지를 모두 표시 할 수있는 사람이 있습니까?

+0

SQL 테이블 구조를 먼저 나열 열을 선호하거나 발생하지 않은 경우. – moonwave99

+2

[** ** 구식 ** 데이터베이스 API] (http://stackoverflow.com/q/12859942/19068)를 사용하고 있으며 [현대 대체] (http://php.net/manual/ko/)를 사용해야합니다. mysqlinfo.api.choosing.php). mysql_ *로 새로운 코드를 작성하지 마라. – Quentin

답변

1
SELECT * 
FROM messages 
WHERE '$ToUName' in (ToUName, FromUName) 
OR '$FromUName' in (ToUName, FromUName) 

또는 당신은 당신의 쿼리에서

SELECT * 
FROM messages 
WHERE ToUName in ('$ToUName', '$FromUName') 
OR FromUName in ('$ToUName', '$FromUName') 
+0

열 위치에 PHP $ 변수를 언급했습니다. –

+0

그래서? [here] (http://sqlfiddle.com/#!2/f4346/1)을 참조하십시오. –

+0

방금이 방법을 시도했습니다. to 및 from의 정보를 얻기 위해 $ _GET을 사용하고 있습니다. ToUName "testing"을하고 FromUName을 유지하면 이전 변수의 결과가 반환됩니다. * ToUName가 ('$ ToUName', '$ FromUName') \t 및 FromUName에서 ('$ ToUName', '$ FromUName')에 그냥으로 수정하고 작동 메시지 \t FROM \t을 선택 –

1

부울 연산자가 섞여서 .. (a AND b) 또는 (c AND d)에 some()을 넣으십시오.

또한 무엇을 할 수 있겠습니까? 그 사실을 알고 있습니까?

+0

그게 내가 원하는거야. 두 사람 사이의 대화를 볼 수있는 "view message"스크립트 –

3

노조는 어떻습니까?

$MessageQuery = mysql_query("(SELECT * FROM messages WHERE ToUName='$ToUName' AND FromUName='$FromUName') UNION (SELECT * FROM messages WHERE FromUName='$ToUName' AND ToUName='$FromUName')"); 

참고 : 특정 순서로 메시지를해야하는 경우 각에 부착 MESSAGE_ID 또는 타임 스탬프와 같은 뭔가를 기대하고, 쿼리의 끝에서 ORDER BY를 사용할 수 있습니다.

0

이 시도 :

$ MessageQuery =는 mysql_query ("메시지 SELECT * FROM WHERE ToUName = '$ ToUName'|| FromUName = '$ FromUName'");

관련 문제