如何在URL中添加多个GET参数且不丢失原有参数
错误原因
你当前的写法不符合URL查询参数的规范:URL中仅能使用1个?标识查询字符串的起始位置,多个参数之间需要用&拼接,你的写法用了两个?,会导致服务端无法正常识别第二个参数。
解决方法
1. 直接修改拼接符号(简单场景快速修复)
把第二个参数前的?替换为&即可,修改后的正确URL为:http://www.c.com/app.php?doctor_id=12&appoin_date=11pm
2. 用PHP内置函数实现动态拼接(推荐,适用于复杂场景)
如果参数是动态获取、或者现有参数数量不固定,推荐用http_build_query函数自动处理参数拼接,完全避免符号错误,也不会丢失已有参数,示例代码如下:
// 读取当前URL中已有的所有GET参数 $params = $_GET; // 新增需要传递的预约时间参数 $params['appoin_date'] = '11pm'; // 自动生成符合规范的查询字符串 $queryString = http_build_query($params); // 拼接为完整的跳转URL,执行跳转 header('Location: http://www.c.com/app.php?' . $queryString); exit();
额外提示
- 如果参数值包含中文、特殊符号,
http_build_query会自动做URL编码,不需要手动处理 - 执行
header跳转前不要有任何内容输出(包括空格、HTML标签等),否则会触发 headers already sent 错误
内容的提问来源于stack exchange,提问作者user15950411
相关产品推荐
相关产品推荐

