Pregunta

Quiero ser capaz de distinguir entre los parámetros de cadena de consulta establecido en nulo existente, y los parámetros que faltan. Por lo que las partes de la pregunta son:

  • ¿Cómo puedo comprobar si un parámetro existe en la cadena de consulta
  • ¿Cuál es el método establecido para pasar un valor nulo en una cadena de consulta? (Por ejemplo PARAM = null o PARAM = (nada))

Gracias

¿Fue útil?

Solución

isset() y 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
   }
}

Otros consejos

array_key_exists :

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

}

Nunca he estado interesado en 'convenciones' para pasar valores vacíos en el servidor -. Estoy acostumbrado a pruebas para detectar la presencia de variables, y luego recortarlos y prueba de vacío, por ejemplo

Los valores almacenados en $_GET y $_POST sólo puede ser cadenas o matrices, a menos que establecer explícitamente en tiempo de ejecución. Si usted tiene una cadena de consulta de query=string el valor es "string" si se utiliza en su lugar: query=null el valor será "null". Tenga en cuenta que para ello es una cadena.

Si envía: query=, el valor será "" o la cadena vacía. Tomar nota de las diferencias href="http://www.php.net/manual/en/types.comparisons.php" rel="nofollow"> entre isset y empty. isset será verdadera si el valor no es nulo, mientras que empty será cierto cuando la evalúa de valor a false. Para ello "" será verdad para ambos isset y empty.

Si lo que desea es comprobar si un parámetro de cadena de consulta se establece en el valor de cadena de "null", sólo tiene que comprobar $_GET['query']=='null' (es posible que desee ajustar el caso de los caracteres antes de que el cheque)

Con una sentencia if en lugar de dos:

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