2014-06-24 2 views
-3

현재 회원 전용 사이트 인 Joomla (모듈 만들기)를 통해 웹 사이트를 만들고 있습니다. 회원이 로그인하면 고유 한 포인트를 볼 수 있습니다 (항공사 플라이어 포인트 사이트와 같음). 데이터베이스의 테이블에 점을 저장했습니다.
#__users (기본 사용자 테이블)
#__smiles_users (이, 사용자 이름을 저장하는 등 등 점)데이터베이스 행을 로그인 한 사용자와 연결

두 테이블이 하나의 비슷한 열을 가지고이 "사용자 이름"입니다 :

나는 두 개의 테이블이있다.

MYSQL 쿼리에서 이렇게하는 것이 현명 할 것이라고 생각했습니다.

연결 MYSQL

이 #__smiles_users 테이블 특정 행에
에코 결과에 일치하는 이름을 찾기 #__users를 통해 로그인 사용자 이름을 찾아 (즉 포함 올바른 사용자 이름)에

MYSQL에 연결하여 결과를 에코했지만 WHERE 함수를 지정해야했습니다.

+1

멋진 이야기입니다. 문제 또는 문제를 자세히 설명하는 치료? – ScottMcGready

+0

'#'문자가 테이블 이름에 허용되지 않는다고 확신합니다 ('#'는 SQL에서 주석을 시작합니다).또한, 테이블 이름 앞에 두 개의 밑줄이 붙는 이유는 무엇입니까? – Nathan

+0

#__ joomla에서 테이블을 쿼리 할 때 #__로 시작합니다. – marc180292

답변

0

:

SELECT * FROM `__users` WHERE `username` = ? 

그리고 그 결과를 저장 : 모든 테이블에 대해 두 개의 쿼리를 수행하고 PHP 연관 배열을 통해 그들과 합류 할 수

  1. a :

    $user = $result->fetch(); 
    

    그런 다음 su의 나머지 데이터에 대해 두 번째 쿼리를 수행하십시오. 채널 사용자 :

    SELECT * FROM `__simles_users` WHERE `username` = ? 
    

    그리고 다음과 같이 프로그래밍 방식으로 데이터를 조인

    $user_smiles_data = $result->fetch(); 
    foreach($user_smiles_data as $key => $value) { 
        $user[$key] = $value; 
    } 
    
  2. 또는이 같은 두 개의 서로 다른 쿼리를 수행하지 않으려는 경우 :

    SELECT * FROM `__users` 
    INNER JOIN `__smiles_users` 
    ON `__users`.`username` = `__smiles_users`.`username` 
    

    이를 쿼리 시간이 일 때 username 필드 두 테이블을 병합합니다. 결과에는 동일한 행에 두 테이블의 모든 필드가 포함되어 같은 username에 포함됩니다.

+0

안녕하세요. 신속한 회신에 감사드립니다. 당신의 대답을 이해하고 이것이 "함께 테이블을 병합"할 때 갈 수있는 좋은 방법이라고 생각합니다. 내가 틀렸다고 정정하십시오. 그러나 위의 코드는 사이트에 로그인 한 사용자를 정의합니까? – marc180292

+0

그러면'logged' 상태를 정의하고'username'과 원하는 로깅 된 상태를 쿼리하는 테이블에 컬럼을 추가해야합니다. 그렇게 할 수 없다면 사용자가 로그인했는지 여부와 사용자 이름을 알 수있는 또 다른 방법이 필요합니다. – arielnmz

+0

나는 좀 더 연구를 해왔다. $ _SESSION이 이것에 대한 더 좋은 대안이 될 수 있을까? 당신은 테이블을 함께 링크 할 때 제 질문에 대답했습니다. 그러나 나는 "로그인 된"열이있는 경우, 2 명이 로그인 한 경우 때때로 망가질 수 있다고 생각합니까? – marc180292

-1

아마도 한 테이블에서 다른 테이블로 외래 키를 생성하려고 할 것입니다. SQL의 예를 들어

: 이것은 데이터 무결성을 보장하기 위해 한 테이블에서 다른 테이블로 링크를 생성

ALTER TABLE #__smiles_users 
ADD FOREIGN KEY (username) 
REFERENCES #__users(username) 

. 이러한 목표를 달성하기 위해 두 가지 방법이있다

+0

성명서에서 옳은 동안, 원래의 질문 (실제로있는 그대로)은 무엇을 성취하려고 시도했는지에 대해 정말로 불분명합니다. 실제로는 대답이 아닙니다. 질문자가 명확해질 때까지 의견 섹션에서 더 잘 설명됩니다. – ScottMcGready

+0

안녕하세요. 이 질문에 대답하지 않더라도. 그것은 제가 작업하고있는 다른 것에 대한 아이디어를 촉발 시켰습니다. 감사합니다 – marc180292

+0

나는 Scott에 동의하지만 나는 논평 할 수 없다. Marc를 도와 드리겠습니다. – ktbird7

관련 문제