2009-07-01 2 views
1

HI, 내가, 내가, MySQL의에서 레코드를 끌어들이 역 연대순으로 주문하고, 결과를 제한하는 데 꽤 그림이 밖으로 시도하고 있습니다ORDER 또한 MySQL의 쿼리에서 LIMIT를 사용하는 동안 - PHP

페이지 당 4 개 (페이지 구성을 위해 페이지 매김 사용). 그것은 현재이 오류를 반환 :

치명적인 오류 : 라인에 /Users/allan/Sites/4is_site/casestudylist.php의 SQL은 126

$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies ORDER BY date desc WHERE niche = '{$_GET['niche']}' $limit"; 

페이지 매김은 지금은 '것을, 잘 작동하고있다 주문을 추가하려고했는데 문제가 발생했습니다.

+0

나는 또한 이것을 피할 필요가 있다고 들었습니다. '{$ _GET ['niche ']}'어떻게해야합니까? – user96828

답변

8

구문이 올바르지 않습니다. 이것은 효과가있다. 나중에 참조 할 수 있도록

$escapedNiche = mysql_real_escape_string($_GET['niche']); 
$query = "SELECT * FROM studies WHERE niche = '$escapedNiche' ". 
     "ORDER BY date DESC $limit"; 

- BTW

0

SELECT Syntax는 $ _GET을 탈출 [ '틈새'] :이 $의 문자를 이스케이프 SQL 주입 공격으로부터 당신을 보호하는 데 도움이 될 것입니다

$clean_niche = mysql_escape_string($_GET['niche']); 
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page; 
$query = "SELECT * FROM studies " 
     ."WHERE niche = '{$clean_niche}' " 
     ."ORDER BY date desc $limit"; 

_ [틈새 시장].

보안을 강화하려면 바인딩 된 매개 변수 (google'em) 및/또는 Zend DB와 같은 라이브러리 함수를 사용하여 데이터베이스에 액세스하십시오.

+0

mysql_escape_string은 입력 값이 따옴표로 묶여있는 경우에만 입력을 살균합니다. 한계를 살균하기 위해 is_numeric()을 사용하여 '틈새'매개 변수가 정수인지 확인할 수 있습니다. – diedthreetimes