2011-08-21 9 views
1

웹 사이트가 있으며 사용자가 방금 로그인하여 사용자 대시 보드로 리디렉션합니다. SESSION에 user_id가 있으므로 SELECT 쿼리를 사용하여 사용자에 대한 다른 정보를 얻을 수 있습니다.PHP 준비 문 이해

제 질문은 foreach 문이나 while 문을 사용하지 않고 Prepared Statments를 사용하여 해당 페이지에 필요한 변수를 가져 오는 방법입니다. 특정 사용자가 로그인하여 여러 사용자에 대한 정보를 표시하지 않을 것입니다.

내가 찾아 모든 예는 다음과 같다 :

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5"; 

if ($stmt = $mysqli->prepare($query)) { 

/* execute statement */ 
$stmt->execute(); 

/* bind result variables */ 
$stmt->bind_result($name, $code); 

/* fetch values */ 
while ($stmt->fetch()) { 
    printf ("%s (%s)\n", $name, $code); 
} 

/* close statement */ 
$stmt->close(); 
} 

/* close connection */ 
$mysqli->close(); 

는 잠시 문에 있어야합니까? 변수 상단이 필요하기 때문에 일반 페이지를 표시하고 필요할 때 변수를 사용할 수 있습니다. 말이 돼?

자세히 알아보고이 작동 방식을 더 잘 이해하고 싶습니다. 방금 최고 기록이 필요한 경우

+0

"상단의 변수"가 의미하는 바를 명확히 할 수 있습니까? –

+0

그것은 준비된 진술의 좋은 예가 아닙니다. 결과 집합을 로컬 변수 범위로 바로 가져 오는 것은 기본적으로 멋진 방법입니다. – mario

+1

그'while' 문장은 각 레코드를 한 번에 하나씩 만 잡습니다. 하나의 레코드 만 검색하는 경우 루프가 필요하지 않습니다. 한 사용자에 대해 필요한 모든 정보를 검색하는 방법은 사용자 데이터가 데이터베이스에 저장되는 방법에 따라 다릅니다. 데이터베이스 구조를 보여줄 수 있습니까? – AgentConundrum

답변

1

:

/* fetch values */ 
$stmt->fetch(); 
printf ("%s (%s)\n", $name, $code); 

$stmt->fetch이 첫 번째 행을 가져옵니다 당신이 모든 행을 계속하지 않으려면, 당신은 while 필요하지 않습니다.

+0

감사합니다. 한번 시도해 보니 작동하지 않았지만 같은 변수를 반향시키고 오류가 계속 발생하여 그리고 그것은 효과가 있었다! – Drew

+0

Woop! 기꺼이 도와주세요. –