Pro 팁 : 아니요SELECT *
을 소프트웨어로 사용하십시오. 귀하의 경우 그것은 해로울 수 있습니다.
귀하의 질문에서 언급 한 user
및 trade
테이블에 대한 귀하의 질문이 맞다고 가정합니다.
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
두 개의 서로 다른 별칭 (송신자) s
및 r
(수신기)를 참조하십시오? 그것은 ID에서 두 이름을 가져 오는 트릭입니다.
sender
과 receiver
의 별칭을 사용하여 두 개의 user_name
열을 결과 집합에서 명확하게 구분하는 방법을 확인하십시오.
이제 php fetch_array
함수를 사용하면 이러한 요소가 배열에 저장됩니다.
$history['sender']
$history['receiver']
$history['item_id']
의 배열 인덱스 문자열은 당신이 당신의 쿼리에 SELECT
절에 지정된 별명에 해당합니다.
따라서 SELECT *
을 피하는 한 가지 이유는 같은 이름의 열을 여러 개 가져올 수 있다는 것입니다. 즉, fetch_array
은 해당 중복을 제거하므로 결과 집합에서 유용한 정보를 잃게됩니다.
"*"선택기를 사용하고 $ fbid를 작은 따옴표 '$ fbid'로 묶지 않고 표에서 선택한 것을 지정 했습니까? –
내가 찾고있는 2 가지 값이 users.user_name이므로 모두 이해할 수 없다고 생각하기 때문에 나는 그렇지 않습니다. 그리고 약 $ fbid는 영향을 미치지 않아야합니다. 적어도 둘 다 테스트했습니다. –
죄송합니다. [deprecated mysql_ * extensions] (http://php.net/manual/en/migration55.deprecated.php)에 대한 질문은 지원하지 않습니다. – CodeZombie