2013-05-21 5 views
0

본인은이 질문에 대해 모호한 제목을 사용 했으므로 깊은 지식의 부족) 이것이 진정한 문제인지 아닌지를 결정합니다.Mysql : 쿼리에서 "WHERE ... IN", "ORDER BY ..."및 "LIMIT"오류가 발생할 수 있습니다.

$query_page = mysql_query($select_prod); 
    $product_total = mysql_num_rows($query_page); 

      $page_rows = 4; 
      $last = ceil($product_total/$page_rows); 
      if ($page < 1) { 
       $page = 1; 
      } elseif ($page > $last) { 
       $page = $last; 
      } 
      $limit = 'limit ' .($page - 1) * $page_rows .',' .$page_rows; 

그리고 : 나는 매김 물건을 정의하는 경우 여기 그 후

$select_prod = "SELECT * FROM product WHERE product_id IN ($some_array)"; 

: 내 제품을 선택 곳

다음

은 다음과 같습니다

것은의 짧은 설명과 함께 다음 시작하자 렌더링을 준비하는 곳

$page_query = mysql_query($select_prod . $limit); 
    $results = array(); 
    while ($array_filter = mysql_fetch_array($page_query)) { 
      $results[] = $array_filter; 
      } 

이 시점까지는 모든 것이 쉽게 흘러 나오고 원했던대로 제품 목록이 나오지만 임의 순서로 표시됩니다.

는이 같은 첫 번째 쿼리의 말에 "가격 ASC BY ORDER"를 포함하는 것을 시도했다 :

$select_prod = "SELECT * FROM product WHERE product_id IN ($some_array) ORDER BY price ASC"; 

하지만 이상한 이유로 오류가있는 제품을 나열 실패

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given... 

나는 문제가 될 수있는 곳을 찾기 위해 이미 몇 시간을 보냈으며,이 포럼은 나를위한 마지막 시도로 보인다.

답변

2

실행하기 전에 전체 쿼리를 직접 인쇄해야합니다. limit 전에 공간을 위해 limit 줄을 변경,

$select_prod = "SELECT * FROM product WHERE product_id IN ($some_array) ORDER BY price ASC "; 

을 또는 : 대신 사용해보십시오.

나는 문제가 limit 전에 공간 부족이라고 생각합니다. 스 니펫 in()limit 100은 유효한 SQL입니다. 스 니펫 in() order by price asclimit 100은 유효한 SQL이 아닙니다.

+0

글쎄요, 전체 쿼리를 인쇄 해달라고 말하면 +1이 붙었습니다. –

+0

한계가 있기 전의 공간. 위대한 관찰. 그래서 구문에 관한 것이 었습니다. 감사합니다 고든! – Auto4x4Motor