PHP:URL 传参时 MySQL 记录只显示一个单词的解决方案

本文将解决 PHP 从 MySQL 数据库读取数据并通过 URL 传递时,由于空格导致参数值截断的问题。我们将介绍如何使用 rawurlencode() 函数对 URL 参数进行编码,确保完整地传递包含空格的字符串,并简要提及接收端页面参数处理的注意事项。

在 PHP 开发中,经常需要将从数据库中读取的数据通过 URL 传递给其他页面。然而,当数据中包含空格等特殊字符时,直接拼接 URL 可能会导致参数值被截断,只传递了第一个单词。这是因为 URL 本身不允许直接包含空格。要解决这个问题,我们需要对 URL 参数进行编码。

使用 rawurlencode() 函数进行 URL 编码

PHP 提供了 rawurlencode() 函数,可以将字符串进行 URL 编码,将空格替换为 %20 等 URL 安全的字符。

以下是修改后的代码示例:

query('SELECT book_category, COUNT(*) FROM books GROUP BY book_category') as $row) {
        echo "";
        echo "" . "" . $row['book_category'] . "" . "";
        echo ""; 
    }
?>

在这个示例中,rawurlencode($row['book_category']) 将 book_category 字段的值进行 URL 编码,确保包含空格的字符串能够完整地传递到 sidebar_cat_display.php 页面。

接收端页面参数处理

在 sidebar_cat_display.php 页面,你需要使用 $_GET 数组来获取传递过来的 book_cat 参数。由于我们使用了 rawurlencode() 进行编码,因此接收到的参数值是经过编码的。如果需要使用原始的字符串,可以使用 rawurldecode() 函数进行解码。

例如:


注意事项

  • 始终使用 rawurlencode() 对 URL 参数进行编码,特别是当参数值可能包含空格、特殊字符或非 ASCII 字符时。
  • 在接收端页面,根据需要使用 rawurldecode() 对接收到的参数值进行解码。
  • 为了防止跨站脚本攻击 (XSS),在使用接收到的参数值之前,始终使用 htmlspecialchars() 函数对其进行转义。

总结

通过使用 rawurlencode() 函数对 URL 参数进行编码,可以有效地解决由于空格等特殊字符导致参数值截断的问题,确保数据能够完整地传递到目标页面。同时,在接收端页面需要注意对接收到的参数值进行解码和转义,以确保数据的安全性和正确性。

以上就是PHP:URL 传参时 MySQL 记录只显示一个单词的解决方案的详细内容,更多请关注骃骐网【www.myinqi.com】。

相关推荐:

PyTube 400 Bad Request 错误的根源分析与稳定解决方案

pytube 因 youtube 后端接口变更频繁触发 http 400 错误,本质是请求结构失效;升级至最新版 pytube 可快速修复,但长期应转向更活跃维护的替代方案(如 pytubefix 或 yt-dlp)并增强错误处理机制。 pytube 因 youtube 后端接口变更频繁触发 http 400 错误,本质是请求结构失效;升级至最新版 pytube 可快速修复,但长期应转向更活跃维护...

Gemini Python SDK 调用超时问题的解决方案

Gemini Python SDK 默认请求超时时间过短,导致频繁触发 DeadlineExceeded (504) 错误;而直接使用 curl 却能快速响应,根本原因在于 SDK 的 gRPC 客户端默认 timeout 设置不合理(通常仅约 60 秒且可能受底层重试逻辑影响),需显式延长超时阈值。 gemini python sdk 默认请求超时时间过短,导致频繁触发 `deadlineexc...

FastAPI 返回空 SQLAlchemy 对象的解决方案

FastAPI 路由返回空对象 {} 是因同步数据库操作与异步路由不匹配导致的 ORM 实例延迟加载失效;根本原因是未正确使用异步数据库会话方法(如 await db.scalar()),导致返回对象在序列化前已脱离会话上下文。 fastapi 路由返回空对象 `{}` 是因同步数据库操作与异步路由不匹配导致的 orm 实例延迟加载失效;根本原因是未正确使用异步数据库会话方法(如 `await d...

GDAL NetCDF CF-1.0 坐标识别失败的根源与解决方案

GDAL(v3.8+)在读取符合CF-1.0规范的NetCDF地理坐标时,可能因x/y坐标变量使用float32(f4)精度不足而误判为非规则网格,导致gdalinfo显示原点坐标(0,0)而非真实投影坐标;升级为float64(f8)或显式添加GeoTransform+spatial_ref属性可彻底解决。 gdal(v3.8+)在读取符合cf-1.0规范的netcdf地理坐标时,可能因`x`/...

JupyterLab 中 Matplotlib 导致内核崩溃的系统性解决方案

本文系统梳理 JupyterLab 环境下调用 matplotlib.pyplot(如 plt.plot() 或 plt.scatter())引发内核意外终止("The kernel appears to have died")的多重成因与实证有效解法,涵盖环境变量配置、图形后端切换、freetype 版本兼容、内核隔离重建等关键路径。 本文系统梳理 jupyterlab 环境下调用 `matpl...

YOLOv4训练常见CUDA库缺失错误的解决方案

在google colab中使用darknet训练yolov4时,出现“libcuda.so.1: cannot open shared object file”错误,本质是旧版darknet未适配colab当前cuda环境所致;推荐切换至维护活跃的hank-ai/darknet并更新构建流程。 在google colab中使用darknet训练yolov4时,出现“libcuda.so.1: c...

Keras Embedding层中input_length参数失效的解决方案

在Keras 3.x(包括TensorFlow内置Keras)中,Embedding层已移除input_length参数,需改用input_shape显式指定输入序列长度,否则会报错“Unrecognized keyword arguments”。 在keras 3.x(包括tensorflow内置keras)中,`embedding`层已移除`input_length`参数,需改用`input_...

Windows 系统中 py 命令默认未指向最新 Python 版本的解决方案

Windows 的 py 启动器默认使用注册表中设定的“默认 Python 版本”,而非自动选择系统中最新安装的版本;可通过 py -0p 查看已注册版本,并用 py -3.12 --default 显式设置最新版为默认。 windows 的 `py` 启动器默认使用注册表中设定的“默认 python 版本”,而非自动选择系统中最新安装的版本;可通过 `py -0p` 查看已注册版本,并用 `py...

DynamoDB 中使用 put_item 循环写入导致数据被覆盖的解决方案

在 DynamoDB 中,对同一主键(partition key)多次调用 put_item 会完全覆盖整条记录,而非合并字段;若需增量添加或更新属性,应改用 update_item 并配合 SET 操作。 在 dynamodb 中,对同一主键(partition key)多次调用 `put_item` 会完全覆盖整条记录,而非合并字段;若需增量添加或更新属性,应改用 `update_item` ...

优化 textarea 滚动条显示:asScrollable 库下的解决方案

本文深入探讨了在使用 asScrollable 等前端库时,textarea 元素滚动条显示异常的问题。通过分析 box-sizing 属性和内部填充对滚动条布局的影响,提供了针对 asScrollable-content 类的 CSS 解决方案,即设置 box-sizing: border-box; 和适当的 padding-right。教程包含详细的代码示例和最佳实践,旨在帮助开发者有效管理和...