2010-12-07 4 views
13

null로 설정된 기존 쿼리 문자열 매개 변수와 누락 된 매개 변수를 구별 할 수 있기를 원합니다. 그래서 질문의 부분은 다음과 같습니다 매개 변수 쿼리 문자열 PHP에서 null 및 누락 된 쿼리 문자열 매개 변수 확인

  • 쿼리 문자열에 null 값을 전달하는 기존의 방법은 무엇인가에을 존재하는 경우

    • 는 어떻게 확인합니까? (예 : PARAM = null 또는 PARAM = (아무것도))

    감사

  • 답변

    29

    사용 isset()empty()

    if (isset($_REQUEST['param'])) 
    { 
        // param was set in the query string 
        if(empty($_REQUEST['param'])) 
        { 
        // query string had param set to nothing ie ?param=&param2=something 
        } 
    } 
    
    +2

    +1! 정답이지만'empty()'는'isset()'를 의미하기 때문에'empty()'를 사용할 때는'isset()'이 필요하지 않습니다. 이것은 특히'! empty()'를 사용할 때 관련이있다. 그리고 질문의 두 번째 부분에 명시 적으로 대답을 추가해야합니다. – jwueller

    +0

    @elusive 설정되지 않은 변수에서 empty를 호출하면 E_WARNING이 표시됩니다. –

    +2

    @Byron Whitlock : 그게 정확하지 않다고 생각합니다. docs state _ "empty()는 변수가 설정되지 않은 경우 경고가 생성되지 않는다는 점을 제외하고는 (boolean) var의 반대입니다." – jwueller

    11

    또는 사용 array_key_exists :

    if(array_key_exists("myParam", $_GET)) { 
    
    } 
    

    나는 본 적이 없습니다 빈 값을 서버에 전달하기위한 '관례'에 관심이 있습니다. 변수의 존재 여부를 테스트하는 데 익숙합니다. 그런 다음 트리밍하고 공을 테스트합니다.

    4

    $_GET$_POST에 저장된 값은 런타임에 명시 적으로 설정하지 않는 한 문자열이나 배열 일 수 있습니다. 검색어 문자열이 query=string 인 경우 값을 "string"으로 변경하면 query=null을 사용하면 "null"이됩니다. 그것 때문에 문자열입니다.

    보낼 경우 : query=, 값은 "" 또는 빈 문자열이됩니다. issetempty 사이의 differences을 기록해 두십시오. isset은 값이 null이 아닌 경우 true이고, false 일 때 empty은 true가됩니다. 따라서 의 경우issetempty의 경우 ""이 true입니다.

    그냥 쿼리 문자열 매개 변수가 "null"의 문자열 값으로 설정 한 경우, 당신은 단순히 $_GET['query']=='null'를 확인하실 수 있습니다 확인하려면 하나

    2

    (당신은 검사 전에 문자의 대소 문자를 조정할 수 있습니다) if 문 대신 2 개 :

    if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name']))) 
    { 
        $name= $_REQUEST['name']; 
    } 
    
    관련 문제