2012-05-21 3 views
0

사용자에 대한 데이터를 반환하는 MySQL 구문이 있습니다. user X에 대한 데이터가 category y에 있는지 알고 싶은 경우 다음 쿼리를 실행하는 더 좋은 방법입니다. 내 쿼리, 또는 FALSE없는 경우에 대한 데이터를 출력하고 무엇을 제거하기 위해 무엇을 알고 할 $.post() 결과 나중에 사용하기로 존재하는 경우,조건에 따라 테이블에 데이터가 있는지 확인하는 구문

$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client "; 
$search_query = mysql_query($search_sql);  
$search_query_result = mysql_fetch_assoc($search_query); 

if($search_query_result) 
{ 
    $search_result = TRUE; 
} 
else 
{ 
    $search_result = FALSE; 
} 

난 그냥 TRUE을 무엇을 얻을 수 있습니다.

참고 : 나는 코드를 시도하지 않은,하지만 난 그게

답변

1

mysql_fetch_assoc()은 가져올 행이 없을 때 FALSE을 반환합니다. 다음과 같이 반환 값을 확인할 수 있습니다.

$search_result = mysql_fetch_assoc($search_query) !== FALSE; 

원본 코드에서 수행하는 작업과 근본적으로 동일합니다.

+0

감사합니다 @SalmanA, 귀하의 솔루션은 정말 간단하고 효과적입니다 – Alex

3
$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client "; 
if ($search_query = mysql_query($search_sql)) 
{ 
    $search_result=(mysql_num_rows($search_query) ? TRUE : FALSE); 
} 

작동하거나, 실제로이 반환 된 행과 세트의 수를 확인

$search_sql = " SELECT id FROM sn_news WHERE id_category = $category AND id_client = $client "; 
$search_query_result=array(); // initialise empty return array 
if ($search_query = mysql_query($search_sql)) 
{ 
    switch mysql_num_rows($search_query) 
    { 
     case 0: 
      $search_result=FALSE; 
      break; 
     default: // got something 
      $search_result=TRUE; 
      while ($row=mysql_fetch_assoc($search_query) 
      { 
       $search_query_result[]=$row; 
      } 
      break; 
    } 
} 

도 데이터를 검색하는 것 같아요 따라서 변수는 0의 정수 값이 FALSE와 같은 유용한 작은 부작용을 사용합니다.

쿼리가 처음 작동하는지 확인하기 위해 몇 가지 검사를 추가 할 수도 있습니다. SQL에서 구문 오류가 있거나 서버 자체에 문제가있는 경우를 확인하는 것이 좋습니다 (내 코드 참조).

+0

감사합니다. – Alex

+1

btw, mysql_num_rows ($ search_query_result)가 아닌 mysql_num_rows ($ search_query)와 같지 않아야합니까? – Alex

+1

@ w0rldart - 예. 내 잘못이야. – DaveyBoy

관련 문제