2011-10-15 3 views
1

가능한 한 최선을 설명하겠습니다.URL 내부 앰프에서 쿼리가 작동하지 않습니다.

내가있는 바로이 PHP 코드 PHP 파일 이름 funcs.php 있습니다

내 브라우저에서 전화
$q = $_GET["q"]; 

$sql = "SELECT * FROM bl_zrify WHERE Name = '".$q."'"; 

$result = mysql_query($sql); 
while($row = mysql_fetch_array($result)) 
    { 

    if ($row['State'] == '') { 
    $SchoolState = 'Unknown'; 
    } 
    else if ($row['State'] == 'AL') { 
    $SchoolState = 'Alabama'; 
    } 
    else if ($row['State'] == 'AK') { 
    $SchoolState = 'Alaska'; 
    } 
    else if ($row['State'] == 'AZ') { 
    $SchoolState = 'Arizona'; 
    } 
    else if ($row['State'] == 'AR') { 
    $SchoolState = 'Arkansas'; 
    } 

    print 'This school is in'; 
    print $SchoolState; 
    } 

=>http://www.domain.com/funcs.php?q=ABRAHAM 볼드윈 농업 대학

URL의 예 그것은 보통 일하고 돌아 오 =>이 학교는 알라바마에 있습니다

하지만 언제 내 브라우저에서,(&) 내부에서 모든 작동하지 않습니다

URL의 예를 =>이 & STRATTON 사업 연구소 http://www.domain.com/funcs.php?q=BRYANT - BUFFALO

나는 이유는 모르겠지만, 어떤 reasson을 위해 내가 어떤 결과를 얻을있을 때 amp (&)을 (를) URL로 보내주십시오.

+4

그것은 당신의 쿼리에서와 같이 전달 된 매개 변수를 사용하는 아주 나쁜 습관이다. 적어도 그것을 피할 수 있어야합니다. –

+5

리틀 바비 테이블 방문 예정입니다. –

+0

알렉 스가 맞다 - 그 코드 –

답변

3
funcs.php?q=BRYANT & STRATTON BUSINESS INSTITUTE - BUFFALO 

두 변수가 전달됩니다. var_dump($_GET);을 수행하면 볼 수 있습니다.

는 당신이 아마 의미 :

funcs.php?q=BRYANT+%26+STRATTON+BUSINESS+INSTITUTE+-+BUFFALO 

는 URL에있는 매개 변수 값을 전달하기 위해, 그들은 적절한 인코딩을해야합니다. url-encoding이라고도합니다. &%26으로 작성해야하며 공백은 특수 문자이기도 한 특수 문자로 + 또는 %2b과 같이 쓸 수 있습니다. 퍼센트 또는 삼중 인코딩이라고도합니다.

PHP에서이 기능은 : urlencodeDocs입니다.

SQL 쿼리에 대한 검색어를 적절하게 인코딩해야합니다. 그렇지 않으면 다른 사람들이 SQL 쿼리를 변경하고 원하는 것보다 더 많은 검색을하고 데이터베이스를 삭제할 수 있습니다. 변수의 절반을 잃는 것보다 더 심각한 문제입니다.

은 참조 : Best way to stop SQL Injection in PHP

+0

그래, 코드를 수정했습니다 : 'funcs.php?Q = BRYANT + 26 % + STRATTON + 사업 + 연구소 + - + BUFFALO' 하지만 여전히 동안 아무것도 반환 '나던 : 일반적으로 'funcs.php Q = 브라만 + 볼드윈 + 농업 + COLLEGE' 결과를 반환?를! – ProDraz

+0

데이터베이스 쿼리를 확인하십시오. 빈 레코드 세트와 일치하는 것일뿐입니다. 왜 그것이 잘못된지보십시오. 적절한 HTTP 쿼리를 수행하면 데이터베이스 쿼리가 적절하다는 의미가 아닙니다. – hakre

1

'&'은 URL 매개 변수를 구분합니다. 두 번째 쿼리의 매개 변수는 q이고 값이 "BRYANT"이고 매개 변수가 STRATTON BUSINESS…입니다.

+0

을 읽습니다. 어떻게 든 URL을 인코딩 할 수 있습니까? – ProDraz

+0

['urlencode()'] (http://php.net/manual/en/function.urlencode.php)을 사용하면됩니다. – millimoose

관련 문제