Checking for null and missing query string parameters in PHP

三世轮回 提交于 2019-11-30 00:50:37

问题


I want to be able to distinguish between existing query string parameters set to null, and missing parameters. So the parts of the question are:

  • How do I check if a parameter exists in the query string
  • What's the established method for passing a null value in a query string? (e.g. param=null or param=(nothing) )

Thanks


回答1:


Use isset() and 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:


Or use array_key_exists:

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

}

I've never been keen on 'conventions' for passing empty values to the server - I'm used to testing for the presence of variables, and then trimming them and testing for emptiness, for example.




回答3:


Values stored in $_GET and $_POST can only be strings or arrays, unless explicitly set at run-time. If you have a query string of query=string the value is "string" if you instead use: query=null the value will be "null". Note that it is therefor a string.

If you send: query=, the value will be "" or the empty string. Take note of the differences between isset and empty. isset will be true if the value is not null, whereas empty will be true when the value evaluates to false. Therefor "" will be true for both isset and empty.

If you just want to check if a query string parameter was set to the string value of "null", you can simply check $_GET['query']=='null' (you may want to adjust the case of the characters before the check)




回答4:


With one if statement instead of two:

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


来源:https://stackoverflow.com/questions/4382669/checking-for-null-and-missing-query-string-parameters-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!