我正在处理一个从链接获取参数的php文件。所说的链接是
http://www.page.com/faltantes.php?filProveedor%5B%5D=Test&filProveedor%5B%5D=TEST1&filProveedor%5B%5D=TEST11&filProveedor%5B%5D=TEST12&filProveedor%5B%5D=TEST2&filProveedor%5B%5D=TEST3&filEstatus%5B%5D=ST&filEstatus%5B%5D=SC&filPaises%5B%5D=col&aceptar=Aceptar
程序需要获得三个参数才能在函数中使用它: filProveedor , filEstatus 和 filPaises 。
前两个参数没有问题,但第三个参数没有。以下是获取参数的代码:
if($_GET['cancelar'])
{
$filProveedor = '';
$filEstatus = 'SC';
$filPais = '';
$filGuia = '';
}else{
$filProveedor = $_GET['filProveedor'];
$filEstatus = $_GET['filEstatus'];
$filPais = $_GET['filPaises'];
$filGuia = $_GET['filGuia'];
}
这些参数将用于以下功能:
function listadoFaltantes($filProveedor, $filEstatus, $filPais, $filGuia, $registroPorPagina,$pagina)
{
conectar();
//$consulta="SELECT * FROM articulos, estatus, ordenes, proveedor WHERE art_id_estatus = est_id AND art_pag = '0' AND art_id_orden = ord_id AND art_id_proveedor = pro_id_clave AND art_id_estatus != 'AP' AND art_id_estatus != 'PA' AND art_id_estatus != 'LE' AND art_id_estatus != 'PB' AND art_id_estatus != 'ER' AND art_id_estatus != 'RE' AND art_id_estatus != 'RO' AND art_id_estatus != 'CF' AND art_id_estatus != 'CS' AND art_id_estatus != 'EO'";
$consulta="SELECT *
FROM articulos, estatus, ordenes, proveedor
WHERE art_id_estatus = est_id
AND art_id_orden = ord_id
AND art_id_proveedor = pro_id_clave
AND art_num_guia IS NULL ";
if($filProveedor != null)
{
$consulta.=" AND (";
$num = count($filProveedor);
for($i=0; $i <= $num; $i++)
{
$filProveedorId = $filProveedor[$i];
if($i == 0 && $filProveedorId != null){$consulta.="art_id_proveedor='$filProveedorId'";}
elseif($filProveedorId != null){$consulta.=" OR art_id_proveedor='$filProveedorId'";}
}
$consulta.=")";
}
if($filEstatus != null)
{
$consulta.=" AND (";
$num = count($filEstatus);
for($i=0; $i <= $num; $i++)
{
$filEstatusId = $filEstatus[$i];
if($i == 0 && $filEstatusId != null){$consulta.="art_id_estatus ='$filEstatusId'";}
elseif($filEstatusId != null){$consulta.=" OR art_id_estatus ='$filEstatusId'";}
}
$consulta.=")";
}
echo "<script>console.log('$filPais');</script>";
if($filPais != null){
$consulta.=" AND (";
$num = count($filPais);
for($i = 0; $i <= $num; $i++){
$filPaisId = $filPais[$i];
echo "<script>console.log('$filPaisId');</script>";
if($i == 0 && $filPaisId != null){$consulta.="pro_pais ='$filPaisId'";}
elseif($filPaisId != null){$consulta.=" OR pro_pais ='$filPaisId'";}
}
$consulta.=")";
}
if ($filGuia == 'notNull') $consulta.=" AND art_num_guia IS NOT NULL";
if ($filGuia == 'null') $consulta.=" AND art_num_guia IS NULL";
//filtro
$consulta.=" ORDER BY art_id_orden ASC";
$inicio = ($pagina-1)*$registroPorPagina;
$consulta .= " LIMIT $inicio , $registroPorPagina";
$tabla = mysql_query($consulta);
return $tabla;
}
加载页面时,应考虑每个部分的所有可能参数。但是,当我第一次加载页面时,在我注释掉上述函数的 $ filPais 部分之前,没有显示任何内容。我告诉函数在控制台上写一下 $ filPais 的值是什么,它告诉我它什么都没有,或者是空字符串。
为什么?谢谢!
print_r($_GET)
的结果是
Array (
[filProveedor] => Array (
[0] => Test
[1] => TEST1
[2] => TEST11
[3] => TEST12
[4] => TEST2
[5] => TEST3
)
[filEstatus] => Array (
[0] => ST
[1] => SC
)
[filPaises] => Array (
[0] => col
)
[aceptar] => Aceptar
)
答案 0 :(得分:4)
%5B is '['
and %5D is ']'
所以这些$ _GET变量实际上是数组,即
$_GET['filProveedor'][];
和其他所有人一样
所以在这段代码中:
$filProveedor = $_GET['filProveedor'];
$filEstatus = $_GET['filEstatus'];
$filPais = $_GET['filPaises'];
$filGuia = $_GET['filGuia'];
$filProveedor
已捕获$_GET['filProveedor'][]
数组,因此您将一组数组传递给您的函数。
您需要将单个出现传递给现有函数或更改函数以将其参数作为数组处理
在脚本的第一行中执行
<?php
echo '<pre>' . print_r($_GET,1) . '</pre>';
如果您有可见性问题,请将其写入文件
<?php
file_put_contents('get_debug.txt', '<pre>' . print_r($_GET,1) . '</pre>');