2012-02-14 2 views
0

아래 코드에서 $ host를 테이블에서 찾을 수 없으면 페이지를 내가 설정 한 다른 페이지로 리디렉션하고 싶습니다. 나는 한 동안 다음 행에서 "die (mysql_error())"가 주어 졌을 때 이것을 어떻게하는지 알아 내려고 애썼다. 어떤 도움을 주시면 감사하겠습니다!항목이 mysql 테이블에 없으면 다른 페이지로 리디렉션하는 방법은 무엇입니까?

$lookup = "SELECT DISTINCT `Id` FROM `google_accountid` WHERE `host_name` = '$host'"; 
$retailer_query = mysql_query($lookup) or die(mysql_error()); 

답변

2
$num_rows = mysql_num_rows($retailer_query); 
if ($num_rows == 0) 
{ 
header("Location: yourpage.php"); 
exit(); 
} 
+0

header()는 브라우저에 아무것도 보내지기 전에 실행되는 경우에만 작동한다는 점에 유의하십시오. –

+0

다음과 같은 오류가 나타납니다. "경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 ..."이것은 당신이 말하는 문제로 인한 것입니까? 이 문제를 어떻게 해결할 수 있습니까? – sharataka

+0

위의 주석을 읽으면 헤더를 변경하기 전에는 아무 것도 출력하지 않을 수도 있습니다. 예를 들어, "echo", HTML 코드 없음 등. –

2

나는 당신이 시도 할 수 있다고 생각 :

$num_rows = mysql_num_rows($retailer_query); 
if ($num_rows == 0) header("Location: " . your_new_page); 
+0

"경고 : 헤더 정보를 수정할 수 없습니다 - 이미 보낸 헤더 ..."제거 방법에 대한 아이디어가 있습니까? – sharataka

+1

@sharataka : 페이지 시작 부분에이 줄을 써야합니다 !! – Marco

0
if ($row["Id"] == NULL) { 
    header('Location: <redirect URL>') ; 
} 
+0

죄송 합니다만 SELECT 문에서 mysql_query는 0 개 이상의 행이 반환되는지 여부에 관계없이 성공시 정수 리소스 식별자를 반환하고 쿼리가 실패하면 'false'를 반환합니다. NULL을 리턴하지 않습니다. –

2

방금 ​​mysql_num_rows()를 사용하여 선택 쿼리는 0 개 이상의 행을 반환 여부를 확인하려면;

$lookup = "SELECT 1 FROM `google_accountid` WHERE `host_name` = '$host'"; 
$retailer_query = mysql_query($lookup) or die(mysql_error()); 
if(mysql_num_rows($retailer_query) === 0) 
{ 
    header("Location: whatever"); 
    die; 
} 

다른 방법으로는 다음과 같은 예를 사용할 수 있습니다, 당신은 나중 단계에서 반환 된 레코드를 사용 할 수 있습니다 :

$lookup = "SELECT `Id` FROM `google_accountid` WHERE `host_name` = '$host'"; 
$retailer_query = mysql_query($lookup) or die(mysql_error()); 
$row = mysql_fetch_assoc($retailer_query); 
if($row === false) 
{ 
    header("Location: whatever"); 
    die; 
} 
echo $row["Id"]; 

header() 당신은 당신의 선택 성명에서 모든 열을 지정할 필요가 없습니다 귀하가 브라우저에 어떤 것을 보내기 전에 진술을 처리해야합니다.

관련 문제