2012-02-24 3 views
1

첫 번째 사항 먼저 ive는 몇 시간 동안이 문제를 해결하려고 노력했지만 좋은 답변을 찾기 위해 노력했지만 좋은 결과는 얻지 못했다. 크게, 대학에 대한 감사! :)다른 문에서 PHP mysql select 문에서 데이터를 올바르게 사용하는 방법

누군가가 로그인 페이지에서 ID를 입력하면 "custID"라는 세션 변수가 저장됩니다. 내 mysql 데이터베이스에 고객 테이블에 "custID"및 "clientID"행이 있습니다. 내가하고 싶은 일은 테이블에 클라이언트의 세부 정보를 표시하기 위해 해당 고객 ID에 연결된 클라이언트 ID를 사용하는 것입니다 (clientCompany는 "clientID"가있는 다른 테이블이며 모든 기본 키/외래 키가 정상적으로 작동합니다). $ refclient가 작동하는 것 같습니다. 나는 그 결과를 되풀이하여 내가 원했던 "2001"을 주었다.

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='$_SESSION[custID]'"); 

echo mysql_result($refclient, 0); // outputs "2001" which is the client ID. this works 

그러나 이제 그 번호를 where 절의 my $ client 문에 사용하고 싶습니다.

$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$refclient'"); 

내가 $의 refclient는 "자원 ID 번호를"주는 것을 이해 ... 그래도 작업이 밤은하지만 난 where 절을 효과적으로 "WHERE 된 ClientID = 2001"라고, 그래서 숫자에 있음을 어떻게 변환합니까? 내가 문을 (멍청한 놈 메신저!) 을 내가 그것 (이 서버 확인에 연결)

$count2=mysql_num_rows($client); 
if($count2==1) 
{ 
    echo "working"; // 1 row is all that it should create 
} 
else 
{ 
    echo "not working"; //this is what always shows 
} 

내가 몇 가지를 가지고 테이블에서 데이터를 gettng하지 먹으 렴 보여줍니다 빠른 카운트 기능을셨습니까 사용하는 방법을 잘 모릅니다 여기에 테이블 헤더를 달아서 내 질문을 짧게했습니다.

while($row = mysql_fetch_array($client)) 
{ 
echo "<tr>"; 
echo "<td>" .$row['clientID']. "</td>"; 
echo "<td>" .$row['compName']. "</td>"; 
echo "<td>" .$row['compAddress']. "</td>"; 
echo "<td>" .$row['contactPersonForCompany']. "</td>"; 
echo "<td>" .$row['compEmail']. "</td>"; 
echo "<td>" .$row['compPhoneNum']. "</td>"; 
echo "</tr>"; 
} 

는 기본적으로 난 내 "$ 대신에 '$의 refclient'의 것을 사용해야합니다 문, 테이블이 잘 작동하는 모든 경우, 모든 브래킷은 여기 :

를 출력한다 무엇처럼, 물건을 폐쇄 클라이언트 "select 문을? '$ refclient'대신 '2001'을 입력하면 완벽하게 작동하지만 분명히 입력 할 수있는 custID에 연결해야합니다. 또한 고객이/저장 세션 변수에 .. 내가 입력을 얻을 질수 있도록 클라이언트 ID를 알고 어차피

$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$refclient'"); 

하는 질문의 에세이 시합 미안 PS! 내가 할 수있는만큼 자세하게 설명하고 싶었다.) 감사합니다!

답변

1

당신과 같이 변수에 값을 저장해야합니다 :

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='$_SESSION[custID]'"); 
$client_num = mysql_result($refclient, 0); 
$client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$client_num'"); 
+0

감사합니다 순전히 :

$refclient = mysql_query("SELECT clientID FROM Customer WHERE custID='{$_SESSION['custID']}'"); $numeric_refclient = mysql_result($refclient, 0); $client = mysql_query("SELECT * FROM clientCompany WHERE clientID = '$numeric_refclient'"); 

그러나,이 또한 한 단계에 참여 또는 하위 쿼리로 수행 할 수 있습니다 : 당신은 두 번째 쿼리에 그것을 숫자로 결과를 변환 한 후 통과해야 이것은 완벽하게 작동했습니다! – Alan006

1
SELECT clientCompany.* FROM Customer, clientCompany WHERE clientCompany.ClientID = Customer.ClientID AND Customer.custID = "jim" 

이것은 당신이로 설정 그것이 무엇 custID가 동일 레코드 고객에서 클라이언트 ID를 동일 clientCompany에 이르기까지 모든 것을 선택해야 .

0

너무 가까이 있습니다.

$client = mysql_query(
    "SELECT * FROM clientCompany WHERE 
     clientID IN (
     SELECT clientID FROM Customer WHERE custID='{$_SESSION[custID]}' 
    )" 
); 
+0

답변 해 주셔서 감사합니다! 그들이 통지 한 작은 것 : Notice : 정의되지 않은 상수 custID의 사용 - 'custID'로 가정 함 단순히 중괄호 때문이었습니다.나는 그 (것)들을 꺼내고 당신의 응답은 그 후에 잘 작동했다! 다시 감사합니다 – Alan006

+0

예, 그것은'{$ _SESSION [ 'custID']}''{$ _SESSION [custID]}'가 아니었을 것입니다 ... PHP 문자열에 배열 요소를 포함 할 때 그것들을 감싸는 것이 좋습니다. 중괄호 안에. 다음에서 '복잡한 구문'섹션을 확인하십시오. http://php.net/manual/en/language.types.string.php –

관련 문제