2014-10-02 6 views
2

2 개의 테이블, 사용자 테이블 및 거래 테이블이 있습니다. 같이동일한 테이블에서 동일한 열 이름을 가진 다중 값을 반향합니다.

:

enter image description here

지금 내 코드의 구조는 : 내가 직면하고있어

<?php 
$history = mysqli_query($con, "SELECT * FROM ......."); 

while($row = mysqli_fetch_array($history)) { 
echo("The sentence"); 
} ?> 

문제는 내가 _ 이름을 반향하는 것을 시도하고 있다는되는 하나의 경우는 수신기이고 다른 하나는 그것을주는 사람이어야합니다.

+1

"*"선택기를 사용하고 $ fbid를 작은 따옴표 '$ fbid'로 묶지 않고 표에서 선택한 것을 지정 했습니까? –

+0

내가 찾고있는 2 가지 값이 users.user_name이므로 모두 이해할 수 없다고 생각하기 때문에 나는 그렇지 않습니다. 그리고 약 $ fbid는 영향을 미치지 않아야합니다. 적어도 둘 다 테스트했습니다. –

+0

죄송합니다. [deprecated mysql_ * extensions] (http://php.net/manual/en/migration55.deprecated.php)에 대한 질문은 지원하지 않습니다. – CodeZombie

답변

4

Pro 팁 : 아니요SELECT *을 소프트웨어로 사용하십시오. 귀하의 경우 그것은 해로울 수 있습니다.

귀하의 질문에서 언급 한 usertrade 테이블에 대한 귀하의 질문이 맞다고 가정합니다.

SELECT * 
    FROM trade AS t 
    JOIN user AS s ON s.user_id = t.user_id_sender 
WHERE s.facebook_id = $fbid 

둘째, 사용자의 이름과 상장 항목 ID를 검색하려면이 옵션을 사용하여 다음과 같이 먼저

는 21 세기 SQL을 사용하여 쿼리를 개주. 우리가 두 번 user 테이블을 JOIN 방법

SELECT s.user_name AS sender, 
     r.user_name AS receiver, 
     t.trade_id AS item_id 
    FROM trade AS t 
    JOIN user AS s ON s.user_id = t.user_id_sender 
    JOIN user AS r ON r.user_id = t.user_id_receiver 
WHERE s.facebook_id = $fbid 

두 개의 서로 다른 별칭 (송신자) sr (수신기)를 참조하십시오? 그것은 ID에서 두 이름을 가져 오는 트릭입니다.

senderreceiver의 별칭을 사용하여 두 개의 user_name 열을 결과 집합에서 명확하게 구분하는 방법을 확인하십시오.

이제 php fetch_array 함수를 사용하면 이러한 요소가 배열에 저장됩니다.

$history['sender'] 
$history['receiver'] 
$history['item_id'] 

의 배열 인덱스 문자열은 당신이 당신의 쿼리에 SELECT 절에 지정된 별명에 해당합니다.

따라서 SELECT *을 피하는 한 가지 이유는 같은 이름의 열을 여러 개 가져올 수 있다는 것입니다. 즉, fetch_array은 해당 중복을 제거하므로 결과 집합에서 유용한 정보를 잃게됩니다.

+0

이것은 내가 본 별칭을 더 잘 보여줍니다. 가끔씩 당신은 무언가에 부딪 히고,'$ understand ++; '고마워! – JoshP

관련 문제